dismiss method

void dismiss({
  1. bool animated = true,
  2. bool fromLeading = false,
})

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);
  }
}