show method

void show(
  1. BuildContext callerContext,
  2. Snackbar snackbar, [
  3. Duration duration = const Duration(seconds: 5)
])

Shows snackbar for duration, replacing any currently visible one.

Implementation

void show(
  BuildContext callerContext,
  Snackbar snackbar, [
  Duration duration = const Duration(seconds: 5),
]) {
  _hideTimer?.cancel();
  _hideTimer = null;
  _entry?.remove();
  _entry?.dispose();
  _entry = null;
  _controller.value = 0;
  _pendingDuration = duration;

  final themeData = Theme.of(callerContext);

  _entry = OverlayEntry(
    builder:
        (_) => Theme(
          data: themeData,
          child: Align(
            alignment: Alignment.bottomRight,
            child: FadeTransition(
              opacity: _animation,
              child: ScaleTransition(
                scale: Tween<double>(begin: 0.9, end: 1).animate(_animation),
                child: SafeArea(
                  top: false,
                  child: Padding(
                    padding: const EdgeInsets.all(Spacing.s4),
                    child: snackbar,
                  ),
                ),
              ),
            ),
          ),
        ),
  );

  Overlay.of(context).insert(_entry!);
  unawaited(_controller.forward());
}