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
相关产品推荐
相关产品推荐

