AnimatedPageDragger constructor
AnimatedPageDragger({
- dynamic slideDirection,
- dynamic transitionGoal,
- dynamic slidePercent,
- StreamController<
SlideUpdate> ? slideUpdateStream, - required TickerProvider vsync,
Implementation
AnimatedPageDragger({
this.slideDirection,
this.transitionGoal,
slidePercent,
StreamController<SlideUpdate>? slideUpdateStream,
required TickerProvider vsync,
}) {
final startSlidePercent = slidePercent;
var endSlidePercent;
var duration;
if (transitionGoal == TransitionGoal.open) {
endSlidePercent = 1.0;
final slideRemaining = 1.0 - slidePercent;
duration = new Duration(
milliseconds: (slideRemaining / PERCENT_PER_MILLISECOND).round());
} else {
endSlidePercent = 0.0;
duration = new Duration(
milliseconds: (slidePercent / PERCENT_PER_MILLISECOND).round());
}
completionAnimationController =
new AnimationController(duration: duration, vsync: vsync)
..addListener(() {
slidePercent = lerpDouble(startSlidePercent, endSlidePercent,
completionAnimationController.value);
slideUpdateStream!.add(new SlideUpdate(
UpdateType.animating,
slideDirection,
slidePercent,
));
})
..addStatusListener((AnimationStatus status) {
if (status == AnimationStatus.completed) {
slideUpdateStream!.add(new SlideUpdate(
UpdateType.doneAnimating,
slideDirection,
endSlidePercent,
));
}
});
}