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

Flutter中Simple_animations包MultiTween未定义问题求助

Flutter simple_animations 2.4.2 中 MultiTween 和 PlayAnimation 未定义问题解决

问题原因

你遇到的问题是由于simple_animations 2.x版本(含2.4.2)对库结构和API做了重大调整,而你参考的是1.x版本的文档,导致代码语法和导入方式不匹配。

解决步骤

1. 修正导入语句

2.x版本将功能拆分为多个子模块,需要单独导入MultiTween和PlayAnimation对应的子包:

import 'package:flutter/material.dart';
import 'package:simple_animations/multi_tween.dart';
import 'package:simple_animations/play_animation.dart';

2. 适配2.x版本的API语法

2.x版本的MultiTween使用了更简洁的扩展方法,替代了1.x的Tween直接构造方式,同时PlayAnimation的泛型参数也有变化。修改后的完整代码如下:

import 'package:flutter/material.dart';
import 'package:simple_animations/multi_tween.dart';
import 'package:simple_animations/play_animation.dart';

enum AniProps { opacity, translateY }

class FadeAnimation extends StatelessWidget {
  final double delay;
  final Widget child;

  FadeAnimation(this.delay, this.child);

  @override
  Widget build(BuildContext context) {
    final _tween = MultiTween<AniProps>()
      ..add(AniProps.opacity, 0.0.tweenTo(1.0))
      ..add(AniProps.translateY, (-30.0).tweenTo(0.0), 
            duration: const Duration(milliseconds: 500), 
            curve: Curves.easeOut);

    return PlayAnimation<MultiTweenValues<AniProps>>(
      delay: Duration(milliseconds: (500 * delay).round()),
      duration: _tween.duration,
      tween: _tween,
      child: child,
      builder: (context, child, animation) => Opacity(
        opacity: animation.get(AniProps.opacity),
        child: Transform.translate(
          offset: Offset(0, animation.get(AniProps.translateY)),
          child: child,
        ),
      ),
    );
  }
}

补充说明

如果你需要使用该库的全部功能,可以直接导入元包(会自动包含所有子模块):

import 'package:simple_animations/simple_animations.dart';

但确保你的pubspec.yaml中依赖的是simple_animations: ^2.4.2,并且执行过flutter pub get更新依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:40:18