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

