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

Flutter中如何访问并修改Rive嵌套画板的输入变量值

解决Flutter中Rive嵌套画板变量访问问题

问题出在嵌套画板的状态机与父画板是独立的,你不能通过父画板的StateMachineController直接获取嵌套画板里的输入变量。要访问嵌套画板Ani2的_var2,得单独为嵌套画板创建对应的状态机控制器。

修改后的初始化代码如下:

void _onRiveInit(Artboard artboard) {
  // 处理父画板的状态机
  var parentController = StateMachineController.fromArtboard(
    artboard,
    'SM1',
    onStateChange: _onStateChange,
  );
  if (parentController != null) {
    artboard.addController(parentController);
    _var1 = parentController.findInput<double>('var1');
  }

  // 找到嵌套画板Ani2
  final nestedArtboard = artboard.find('Ani2') as RuntimeNestedArtboard?;
  if (nestedArtboard != null) {
    // 为嵌套画板创建对应的状态机控制器(替换成你实际的状态机名称)
    var nestedController = StateMachineController.fromArtboard(
      nestedArtboard.artboard,
      'SM2', // 这里填嵌套画板状态机的真实名称
    );
    if (nestedController != null) {
      nestedArtboard.artboard.addController(nestedController);
      _var2 = nestedController.findInput<double>('var2');
    }
  }

  setState(() {
    _stateMachineController = parentController;
    // 可额外保存嵌套控制器,方便后续调用
    // _nestedStateMachineController = nestedController;
  });
}

关键说明:

  • 先通过artboard.find('Ani2')定位嵌套画板,参数要和你Rive文件里的嵌套画板名称一致(对应日志里的Ani2)。
  • 嵌套画板的状态机名称需要你自行确认,示例中的SM2要替换成实际名称。
  • 父、嵌套画板需分别添加各自的控制器,之后就能正常访问和修改_var2.value了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:49:58