添加颜色过渡

Add color transitions

我正在尝试制作一种颜色,使颜色从绿色变为琥珀色再变为红色。在升级到 null-safety 之前,以下代码工作正常,但现在它抛出错误...

TweenSequence<Color>([
  TweenSequenceItem(weight: 0.5, tween: ColorTween(begin: Colors.green, end: Colors.green)),
  TweenSequenceItem(weight: 0.25, tween: ColorTween(begin: Colors.green, end: Colors.amber)),
  TweenSequenceItem(weight: 0.25, tween: ColorTween(begin: Colors.amber, end: Colors.red)),
])

我收到以下错误:

The argument type 'ColorTween' can't be assigned to the parameter type 'Animatable

我做错了什么,我该如何解决?

更新:

AnimationController(duration: Duration(seconds: 10), vsync: this).drive(TweenSequence<Color?>([
  TweenSequenceItem(weight: 0.5, tween: ColorTween(begin: Colors.green, end: Colors.green)),
  TweenSequenceItem(weight: 0.25, tween: ColorTween(begin: Colors.green, end: Colors.amber)),
  TweenSequenceItem(weight: 0.25, tween: ColorTween(begin: Colors.amber, end: Colors.red)),
]));

如果您查看 ColorTween 的继承,您会发现它是 Animatable<Color?> 的子类型,而您的 TweenSequence 使用不兼容的 Color 泛型。

只需将 Color 更改为 Color?:

TweenSequence<Color?>([
  TweenSequenceItem(weight: 0.5, tween: ColorTween(begin: Colors.green, end: Colors.green)),
  TweenSequenceItem(weight: 0.25, tween: ColorTween(begin: Colors.green, end: Colors.amber)),
  TweenSequenceItem(weight: 0.25, tween: ColorTween(begin: Colors.amber, end: Colors.red)),
])