showToast function

Future<void> showToast({
  1. required ToastType type,
  2. required String message,
  3. NativeToastOptions options = const NativeToastOptions(),
})

Shows a native toast notification above all Flutter widgets and WebViews.

Example:

showToast(type: ToastType.success, message: "Profile saved!");

showToast(
  type: ToastType.warning,
  message: "Session expiring soon",
  options: NativeToastOptions(
    position: ToastPosition.bottom,
    length: NativeToastLength.long,
    bgColor: Color(0xffCC8E12),
    icon: NativeToastIcon.warning(),
  ),
);

Implementation

Future<void> showToast({
  required ToastType type,
  required String message,
  NativeToastOptions options = const NativeToastOptions(),
}) async {
  final resolvedPosition = options.position;
  final resolvedLength = options.length;
  if (resolvedLength.durationMs <= 0 && resolvedLength.durationMs != -1) {
    throw ArgumentError.value(
      resolvedLength.durationMs,
      'options.length',
      'Custom duration must be a positive integer in milliseconds.',
    );
  }
  final resolvedDismiss = options.dismissDirection ??
      (resolvedPosition == ToastPosition.top
          ? NativeToastDismissDirection.up
          : NativeToastDismissDirection.down);
  final resolvedColor = options.bgColor ?? _defaultColorFor(type);
  final resolvedIcon = options.icon ?? _defaultIconFor(type);

  await _channel.invokeMethod('showToast', {
    'type': _typeToString(type),
    'message': message,
    'position': _positionToString(resolvedPosition),
    'length': resolvedLength.name,
    'durationMs': resolvedLength.durationMs,
    'color': resolvedColor.toARGB32(),
    'icon': resolvedIcon.name,
    'iconColor': resolvedIcon.color.toARGB32(),
    'dismissDirection': _dismissDirectionToString(resolvedDismiss),
  });
}