Flutter中如何为Rive动画设置Input初始值?
Flutter Rive动画设置初始值控制起始位置的解决方案
问题核心是当前代码在添加控制器后设置input值,导致动画从起始点过渡到目标值。要实现直接跳转到初始值位置,需调整代码执行顺序:
- 关键修改:在将控制器添加到artboard之前,先设置input的初始值。因为控制器添加后会立即启动动画循环,此时再赋值会被识别为动态输入变更,触发过渡效果;而提前赋值的话,控制器会以该值作为初始状态加载,直接定位到对应动画位置。
修改后的代码:
context.rive.dataBalloonsRIV.copyWith( fit: BoxFit.fill, onInit: (artboard) async { _controller = StateMachineController.fromArtboard( artboard, _stateMachine, ); if (_controller != null) { // 先设置初始值,再添加控制器 _amountInput = _controller!.findInput<double>('state'); final startInput = _controller!.findInput<bool>('start'); _amountInput?.value = 3; startInput?.value = true; artboard.addController(_controller!); } setState(() {}); }, ),
你提到的initialValue在Flutter的Rive库中无需单独调用API,通过上述调整代码顺序的方式就能实现等效效果——让控制器初始化时直接使用你设定的input值作为起始状态,避免过渡动画。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

