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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:14:51