Flutter 在提供程序状态更新时重置颤振动画值
我正在制作一个stepper小部件,我已经能够制作它的所有部分,但是我计划在动画运行后从我的提供程序更新一个状态值,这是不可能的,因为每当我更新我的提供程序状态时,Flutter 在提供程序状态更新时重置颤振动画值,flutter,animation,provider,vsync,Flutter,Animation,Provider,Vsync,我正在制作一个stepper小部件,我已经能够制作它的所有部分,但是我计划在动画运行后从我的提供程序更新一个状态值,这是不可能的,因为每当我更新我的提供程序状态时,initState方法就会运行,这反过来会重置我的动画 这是我的initState()方法的内容: @override initState() { print("REINIT STATE****"); controller = AnimationController(
initState
方法就会运行,这反过来会重置我的动画
这是我的initState()
方法的内容:
@override
initState() {
print("REINIT STATE****");
controller = AnimationController(
vsync: this,
duration: Duration(milliseconds: 3000),
);
}
这就是我开始动画的方式
void startAnimation() {
Animation<double> animation = Tween<double>(
begin: getTweenBegin(step + 1), end: getTweenEnd(step + 1))
.animate(controller);
print(animation.value);
controller.addListener(() {
setState(() {
animationValue = animation.value;
});
if (animation.status == AnimationStatus.completed) {
Provider.of<LanguageProvider>(context, listen: false).localeValue =
Locale("fr");
}
});
controller.forward();
}
void startAnimation(){
动画=吐温(
开始:getTweenBegin(步骤+1),结束:getTweenEnd(步骤+1))
.制作动画(控制器);
打印(动画.值);
controller.addListener(){
设置状态(){
animationValue=animation.value;
});
如果(animation.status==AnimationStatus.completed){
Provider.of(context,listen:false).localeValue=
地点(“fr”);
}
});
controller.forward();
}
一切正常,但每当AnimationStatus完成并且我尝试更新提供程序状态时,animation.value
值返回初始值,我可以看到再次调用initState
如果从提供者的setter中删除对notifyListeners()
的调用,则动画值不会重置,但需要更新新值
在提供程序状态更新后,我如何保留此值?小部件会重新加载,因为它有一个侦听LanguageProvider值的父项。您在构建方法中的事件侦听器上调用
startAnimation()
?@GazihanAlankus该事件侦听器可能再次被调用?