跳到主要内容

Rive 事件

⚠️ 已弃用:请使用数据绑定代替事件

在运行时监听和响应 Rive 事件。

Event 是一个密封类,有两个选项:

  • OpenUrlEvent
  • GeneralEvent

你需要在 StateMachine 实例上注册事件监听器:

final controller = RiveWidgetController(_riveFile!);
controller?.stateMachine.addEventListener(_onRiveEvent);

void _onRiveEvent(Event event) {
// 对事件执行某些操作
}

访问 properties 返回 Map<String, CustomProperty>CustomProperty 也是一个密封类,有以下选项:

  • CustomNumberProperty
  • CustomBooleanProperty
  • CustomStringProperty

所有这些都具有 value 字段。在 Event 类上,有便捷的访问器:

// 便捷访问器
event.property(name); // 返回 CustomProperty
event.numberProperty(name); // 返回 CustomNumberProperty
event.booleanProperty(name); // 返回 CustomBooleanProperty
event.stringProperty(name); // 返回 CustomStringProperty

重要的是在不再需要时移除事件监听器以避免内存泄漏:

stateMachine.removeEventListener(_onRiveEvent);

或者事件监听器会在 StateMachine 被释放时同时被释放。

stateMachine.dispose();

如果你释放 RiveWidgetController,那也会释放 StateMachine 并移除所有事件监听器。