新来的振作起来。我正在使用Tween和AnimationController。我正在尝试使用animateto()方法和offset类型的目标。这有可能吗?
文件上说:
animateto(双目标,持续时间,曲线曲线:curves.linear)→tickerfuture
将动画从其当前值驱动到目标
动画控制器:
_controller = AnimationController(
duration: const Duration(milliseconds: 500),
vsync: this,
);
animateto():
_controller.animateTo(Offset(0,0))
上面的行不正确:
The argument type 'Offset' can't be assigned to the parameter type 'double'.dart(argument_type_not_assignable)
是否有通用类型的AnimationController?如果没有,为什么?我知道我可以使用。但看起来像animateto()和类似的animationController方法只适用于double类型的目标。这看起来很混乱。
最佳答案
不。AnimationController只处理双精度。
动画控制器使用的double与tween使用的double有不同的含义。
AnimationController只与动画进度有关,而Tween可以在多次转换后输出一个值。
因此,不仅很难将转换后的值转换回它所代表的进度,而且还受到限制:
曲线。如果AnimationController应该处理任何中间对象,那么它也将隐式支持曲线。
问题是,我们可以有这样的曲线:
但这引发了一个问题。正如我们在前面的GIF中看到的那样,通过曲线转换后,我们可以发射多次相同的值。
在这种情况下,如果控制器可以多次发出x,那么animateTo(X)
的预期行为是什么?
这没有道理。因此,AnimationController只使用线性浮动值。如果我们想要更复杂的行为,我们必须使用不同的对象。
关于flutter - 是否有通用类型的AnimationController?如果没有,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54908824/