OverlayMorphController constructor
OverlayMorphController({
- required TickerProvider vsync,
- Duration appearDuration = const Duration(milliseconds: 220),
- Duration disappearDuration = const Duration(milliseconds: 150),
- Duration expandDuration = const Duration(milliseconds: 260),
- Duration collapseDuration = const Duration(milliseconds: 200),
- Curve appearCurve = Curves.easeOutBack,
- Curve disappearCurve = Curves.easeOutQuad,
- Curve expandCurve = Curves.fastOutSlowIn,
- Curve collapseCurve = Curves.easeOutQuad,
- double dismissThreshold = 0.35,
- double expandThreshold = 0.35,
- double flickVelocityThreshold = 800.0,
- double cardWidthFraction = 0.85,
- double cardHeightFraction = 0.72,
Implementation
OverlayMorphController({
required TickerProvider vsync,
this.appearDuration = const Duration(milliseconds: 220),
this.disappearDuration = const Duration(milliseconds: 150),
this.expandDuration = const Duration(milliseconds: 260),
this.collapseDuration = const Duration(milliseconds: 200),
this.appearCurve = Curves.easeOutBack,
this.disappearCurve = Curves.easeOutQuad,
this.expandCurve = Curves.fastOutSlowIn,
this.collapseCurve = Curves.easeOutQuad,
this.dismissThreshold = 0.35,
this.expandThreshold = 0.35,
this.flickVelocityThreshold = 800.0,
this.cardWidthFraction = 0.85,
this.cardHeightFraction = 0.72,
}) {
_overlayController = AnimationController(
vsync: vsync,
value: 0.0,
duration: appearDuration,
reverseDuration: disappearDuration,
);
_expandController = AnimationController(
vsync: vsync,
value: 0.0,
duration: expandDuration,
reverseDuration: collapseDuration,
);
_horizontalSnapController = AnimationController(
vsync: vsync,
duration: const Duration(milliseconds: 180),
);
_overlayController.addListener(_onOverlayTick);
_overlayController.addStatusListener(_onOverlayStatus);
_expandController.addListener(_onExpandTick);
_expandController.addStatusListener(_onExpandStatus);
_horizontalSnapController.addListener(_onHorizontalSnapTick);
_horizontalSnapController.addStatusListener(_onHorizontalSnapStatus);
_state = const OverlayMorphState(
overlayProgress: 0.0,
expandProgress: 0.0,
phase: OverlayPhase.idle,
);
}