Flutter AnimationController with dynamic duration - error: Const variables must be initialized with a constant value

Flutter AnimationController with dynamic duration - error: Const variables must be initialized with a constant value

我想通过我的小部件参数设置动画持续时间,但它不起作用,因为持续时间需要用常量初始化

class CircularTimer extends StatefulWidget {
  CircularTimer({@required this.seconds});
  _CircularTimer createState() => _CircularTimer();
  final seconds;
}

class _CircularTimer extends State<CircularTimer>
    with SingleTickerProviderStateMixin {
  Animation<double> animation;
  AnimationController controller;

  @override
  void initState() {
    super.initState();
    controller = AnimationController(
        duration: const Duration(/*not working*/seconds: widget.seconds), vsync: this);
    animation = Tween<double>(begin: 0, end: 300).animate(controller);
    controller.forward();
  }

  @override
  Widget build(BuildContext context) =>
      CircularTimerWidget(animation: animation);
}

您不能将这样的数据传递给 const,因此解决方案是从 Duration 中删除 const 或仅使用一些 const 值。

解法:1

controller = AnimationController(
  duration: Duration(seconds: widget.seconds), // remove const
  vsync: this,
);

解法:2

controller = AnimationController(
  duration: const Duration(seconds: 1), // some const value
  vsync: this,
);