You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何访问Rive嵌套画板‘mouth’的输入?

解决Rive嵌套画板输入项访问问题

嵌套画板的状态机独立于主画板,无法通过主画板的StateMachineController直接获取其输入项,需单独获取嵌套画板的控制器来访问:

  1. 从主画板中定位目标嵌套画板mouth
  2. 为嵌套画板创建对应的StateMachineController
  3. 从嵌套画板的控制器中获取输入项sad

修改后的代码示例:

RiveAnimation.asset(
  RiveAsset.RG,
  artboard: 'Artboard',
  fit: BoxFit.contain,
  onInit: onRiveInit,
);

SMIInput<bool>? hearInput;
SMIInput<bool>? sadInput;

void onRiveInit(Artboard artboard) {
  // 处理主画板的状态机
  final mainController = StateMachineController.fromArtboard(
    artboard,
    'main',
  );
  if (mainController != null) {
    artboard.addController(mainController);
    hearInput = mainController.findInput<bool>('hear');
  }

  // 处理嵌套画板"mouth"的状态机
  final mouthArtboard = artboard.findChildArtboard('mouth');
  if (mouthArtboard != null) {
    // 替换为嵌套画板实际的状态机名称,例如'mouth_state_machine'
    final mouthController = StateMachineController.fromArtboard(
      mouthArtboard,
      'mouth_state_machine', 
    );
    if (mouthController != null) {
      mouthArtboard.addController(mouthController);
      sadInput = mouthController.findInput<bool>('sad');
    }
  }
}

注意事项:

  • 需将代码中的'mouth_state_machine'替换为你在Rive编辑器中给嵌套画板设置的实际状态机名称
  • 确保嵌套画板的状态机、输入项名称与代码中完全一致(区分大小写)

内容的提问来源于stack exchange,提问作者mzahin01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:21:01