initDistanceAnimation method
initialize distance animation
Implementation
void initDistanceAnimation(RayAnimationConfig config) {
if (!config.enabled) {
distanceAnimation = ConstantTween<double>(0).animate(widget.controller);
return;
}
double entryDelay = config.randomizeStartDelay
? MathUtil.randDouble(0.3)
: config.animationStartDelay;
double finishDelay = config.randomizeFinishDelay
? MathUtil.randDouble(0.3)
: config.animationFinishDelay;
List<TweenSequenceItem<double>> sequenceItemList = [];
if (entryDelay > 0) {
sequenceItemList.add(
TweenSequenceItem(
tween: Tween<double>(
begin: -widget.fanSlice.height,
end: 0,
),
weight: entryDelay
)
);
}
TweenSequenceItem(
tween: Tween(begin: -widget.fanSlice.height, end: 0.0),
weight: 1 - entryDelay - finishDelay
);
if (finishDelay > 0) {
sequenceItemList.add(
TweenSequenceItem(
tween: ConstantTween(0),
weight: finishDelay
)
);
}
var curve = config.curve;
if (config.randomizeStartDelay) {
curve = Interval(
MathUtil.randDouble(0.5),
1,
curve: curve
);
}
distanceAnimation = TweenSequence<double>(
sequenceItemList
).animate(
CurvedAnimation(
parent: widget.controller,
curve: curve
)
);
}