FloatingDraggableController constructor
FloatingDraggableController({
- required TickerProvider vsync,
- bool initialVisibility = true,
- Duration duration = const Duration(milliseconds: 300),
- Duration? visibilityDuration,
- Duration? naturalElasticDuration,
- Curve naturalElasticCurve = Curves.bounceOut,
- Duration? restrictAfter = const Duration(seconds: 3),
- Duration? restrictDuration,
- Curve restrictCurve = Curves.linearToEaseOut,
Implementation
FloatingDraggableController({
required TickerProvider vsync,
bool initialVisibility = true,
Duration duration = const Duration(milliseconds: 300),
Duration? visibilityDuration,
Duration? naturalElasticDuration,
Curve naturalElasticCurve = Curves.bounceOut,
Duration? restrictAfter = const Duration(seconds: 3),
Duration? restrictDuration,
Curve restrictCurve = Curves.linearToEaseOut,
}) : _vsync = vsync,
_visibilityDuration = visibilityDuration ?? duration,
_naturalElasticDuration = naturalElasticDuration ?? duration,
_naturalElasticCurve = naturalElasticCurve,
_restrictDuration = restrictDuration ?? duration,
_restrictCurve = restrictCurve {
_visibilityController.value = initialVisibility ? 1.0 : 0.0;
if (restrictAfter != null) {
naturalElasticAnimation.addStatusListener((status) async {
switch (status) {
case AnimationStatus.forward:
case AnimationStatus.reverse:
case AnimationStatus.dismissed:
break;
case AnimationStatus.completed:
final animationKey = Object();
_animationKey = animationKey;
await Future.delayed(restrictAfter);
if (_animationKey != animationKey) return;
await animateRestrict();
break;
}
});
}
}