dismiss method
Programmatically dismisses the row via full swipe and invokes GlassSwipeActions.onDismissed.
Implementation
void dismiss({bool animated = true, bool fromLeading = false}) {
if (!mounted || _isDismissing) return;
_isDismissing = true;
_scope?.unregisterRow(this);
final rowWidth = context.size?.width ?? 390.0;
final isRtl = Directionality.of(context) == TextDirection.rtl;
final dismissTarget = isRtl
? (fromLeading ? -rowWidth : rowWidth)
: (fromLeading ? rowWidth : -rowWidth);
final action = fromLeading
? (widget.leadingActions.isNotEmpty
? widget.leadingActions.first
: null)
: (widget.trailingActions.isNotEmpty
? widget.trailingActions.first
: null);
action?.onTap();
final dismissCallback = widget.onDismissed;
if (dismissCallback != null) {
final reduceMotion = GlassAccessibilityData.of(context).reduceMotion ||
(MediaQuery.maybeDisableAnimationsOf(context) ?? false);
if (!animated || reduceMotion) {
_dismissController.value = 1.0;
dismissCallback();
} else {
_animateTo(dismissTarget);
_dismissController.forward().then((_) {
if (mounted) {
dismissCallback();
}
});
}
} else {
_isDismissing = false;
close(animated: animated);
}
}