toast static method

void toast({
  1. required String message,
  2. String? title,
  3. UToastType type = UToastType.neutral,
  4. IconData? icon,
  5. UToastPosition position = UToastPosition.bottom,
  6. Duration duration = const Duration(seconds: 3),
  7. Duration animationDuration = const Duration(milliseconds: 300),
  8. Color? backgroundColor,
  9. Color? foregroundColor,
  10. EdgeInsets margin = const EdgeInsets.all(24),
  11. double borderRadius = 12,
  12. double elevation = 6,
  13. VoidCallback? onTap,
  14. VoidCallback? onDismiss,
})

Implementation

static void toast({
  required String message,
  String? title,
  UToastType type = UToastType.neutral,
  IconData? icon,
  UToastPosition position = UToastPosition.bottom,
  Duration duration = const Duration(seconds: 3),
  Duration animationDuration = const Duration(milliseconds: 300),
  Color? backgroundColor,
  Color? foregroundColor,
  EdgeInsets margin = const EdgeInsets.all(24),
  double borderRadius = 12,
  double elevation = 6,
  VoidCallback? onTap,
  VoidCallback? onDismiss,
}) {
  if (message.isNullOrEmpty()) return;
  final BuildContext ctx = navigatorKey.currentContext!;
  clearToast();

  final Color background = backgroundColor ?? (type == UToastType.neutral ? _scheme.inverseSurface : _backgroundFor(type));
  final Color foreground = foregroundColor ?? (type == UToastType.neutral ? _scheme.onInverseSurface : _foregroundFor(type));
  final IconData? resolvedIcon = icon ?? _iconFor(type);

  final OverlayEntry entry = OverlayEntry(
    builder: (BuildContext context) =>
        _UToastCard(
          message: message,
          title: title,
          icon: resolvedIcon,
          background: background,
          foreground: foreground,
          position: position,
          margin: margin,
          borderRadius: borderRadius,
          elevation: elevation,
          animationDuration: animationDuration,
          onTap: onTap,
        ),
  );

  _toastEntry = entry;
  Overlay.of(ctx).insert(entry);

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