showOverlay static method

void showOverlay({
  1. required Widget child,
  2. Duration duration = const Duration(seconds: 3),
  3. Alignment alignment = Alignment.topCenter,
  4. EdgeInsets padding = const EdgeInsets.all(20),
  5. VoidCallback? onDismiss,
})

Implementation

static void showOverlay({
  required Widget child,
  Duration duration = const Duration(seconds: 3),
  Alignment alignment = Alignment.topCenter,
  EdgeInsets padding = const EdgeInsets.all(20),
  VoidCallback? onDismiss,
}) {
  dismissOverlay();

  final OverlayEntry overlay = OverlayEntry(
    builder: (BuildContext context) => SafeArea(
      child: Padding(
        padding: padding,
        child: Align(
          alignment: alignment,
          child: Material(
            color: Colors.transparent,
            child: child,
          ),
        ),
      ),
    ),
  );

  _currentOverlay = overlay;
  Overlay.of(navigatorKey.currentContext!).insert(overlay);

  if (duration != Duration.zero) {
    Future<void>.delayed(duration, () {
      dismissOverlay();
      onDismiss?.call();
    });
  }
}