如何从 flutter 为 rive 中的嵌套画板中的输入赋予值

问题描述 投票:0回答:1

flutter:“RuntimeArtboard”的实例(-1)-> Ani1 flutter:“RuntimeNestedArtboard”的实例 (2) -> Ani2

void _onRiveInit(Artboard artboard) {
    var controller = StateMachineController.fromArtboard(
      artboard,
      'SM1',
      onStateChange: _onStateChange,
    );

    artboard.addController(controller!);
    _var1 = controller.findInput<double>('var1');  // its in parent board
    _var2 = controller.findInput<double>('var2');  // its in nested board

    setState(() {
      _stateMachineController = controller;
    });
  }

当我尝试访问 _var2.values 时,它显示为 null。 _var1 值很好。

第二个画板添加到第一个画板。

如何访问 _var2 值并更改其值。

flutter rive
1个回答
0
投票

您可以修改您的_onRiveInit函数以正确访问和修改 父画板和嵌套画板中的值:

 void _onRiveInit(Artboard artboard) {

  var parentController = StateMachineController.fromArtboard(
  artboard,
  'SM1',
   onStateChange: _onStateChange,
 );
 artboard.addController(parentController!);
_var1 = parentController.findInput<double>('var1'); 

 RuntimeNestedArtboard? nestedArtboard = artboard as 
  RuntimeNestedArtboard;

if (nestedArtboard != null && nestedArtboard.childArtboard != null) {
  var nestedController = StateMachineController.fromArtboard(
    nestedArtboard.childArtboard!,
    'SM1', 
    onStateChange: _onStateChange,
  );
  nestedArtboard.childArtboard!.addController(nestedController!);
   _var2 = nestedController.findInput<double>('var2');  
  }

setState(() {
  _stateMachineController = parentController; 
 });
}
© www.soinside.com 2019 - 2024. All rights reserved.