0

我试图从中传递列表位置并得到这个错误:参数类型“动画”​​不能分配给参数类型“动画”​​。我按照 youtuber 的步骤操作,可以在此处查看完整代码:https ://github.com/codespiration/petadoption/blob/master/menu_frame.dart 。真的很感谢你们的帮助

> @override   void initState() {
>     super.initState();
>     _animationController = AnimationController(vsync: this, duration: duration);
>     scaleAnimation =
>         Tween<double>(begin: 1.0, end: 0.6).animate(_animationController);
>     smallerScaleAnimation =
>         Tween<double>(begin: 1.0, end: 0.5).animate(_animationController);
> 
>     scaleAnimations = [
>       Tween<double>(begin: 1.0, end: 0.7).animate(_animationController),
>       Tween<double>(begin: 1.0, end: 0.6).animate(_animationController),
>       Tween<double>(begin: 1.0, end: 0.5).animate(_animationController),
>     ];
>     _animationController.forward();   }
> 
> Widget buildScreenStack(int position) {
>     final deviceWidth = MediaQuery.of(context).size.width;
>     return AnimatedPositioned(
>       duration: duration,
>       top: 0,
>       bottom: 0,
>       left: menuOpen ? deviceWidth * 0.35 : 0.0,
>       right: menuOpen ? deviceWidth * -0.65 : 0.0,
>       child: ScaleTransition(
>         scale: scaleAnimations[position],
>         child: GestureDetector(
>           onTap: () {
>             if (menuOpen) {
>               setState(() {
>                 menuOpen = false;
>                 _animationController.reverse();
>               });
>             }
>           },
>           child: AbsorbPointer(
>             absorbing: menuOpen,
>             child: Stack(
>               children: <Widget>[
>                 Material(
>                   animationDuration: duration,
>                   borderRadius: BorderRadius.circular(menuOpen ? 30.0 : 0.0),
>                   child: screens[position],
>                 ),
>               ],
>             ),
>           ),
>         ),
>       ),
>     );   }
> 
>   @override   Widget build(BuildContext context) {
>     final deviceWidth = MediaQuery.of(context).size.width;
>     return Stack(
>       children: finalStack(),
>     );   } }
4

1 回答 1

3

scaleAnimations字段被声明为List<Animation>,并且由于Animation是通用的,因此它隐含地与 相同List<Animation<dynamic>>。因此,运行时会将列表中的任何元素解释为Animation<dynamic>,即使它们实际上具有类型Animation<double>

要解决此问题,您只需更改字段声明:

List<Animation<double>> scaleAnimations;
于 2021-07-08T18:24:15.307 回答