AnimatedCrossFade 是我最喜欢使用的 Flutter 控件之一,它非常流畅和方便。
我知道这与控件的预期用途相矛盾,但我想知道是否有一种方法可以调整它,使其不在其子项之间进行交叉淡化,而是先将其中一个淡出,然后再将另一个淡入。
如果使用此控件无法实现此操作,那么最好的方法是什么?
AnimatedCrossFade 是我最喜欢使用的 Flutter 控件之一,它非常流畅和方便。
我知道这与控件的预期用途相矛盾,但我想知道是否有一种方法可以调整它,使其不在其子项之间进行交叉淡化,而是先将其中一个淡出,然后再将另一个淡入。
如果使用此控件无法实现此操作,那么最好的方法是什么?
我找到了我想要的解决方案。
"像这样的东西非常有效:
class LinearHalfCurve extends Curve {
@override
double transformInternal(double t) {
if(t < 0.5) {
return t*2; // goes from 0-1.0 when t is 0-0.5
}
return 1.0; // cap to 1.0 when t is above 0.5
}
}
然后在你的AnimatedCrossFade中设置:
firstCurve: LinearHalfCurve(),
secondCurve: LinearHalfCurve().flipped,