showToast function
Future<void>
showToast({
- required ToastType type,
- required String message,
- 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),
});
}