showVdSnackbar function
VdSnackbarEntry
showVdSnackbar(
- BuildContext context, {
- required String message,
- String? action,
- VoidCallback? onAction,
- Widget? leadingIcon,
- bool closable = false,
- Duration duration = const Duration(seconds: 4),
Shows a bottom-anchored snackbar via the root Overlay.
Returns a VdSnackbarEntry that can be used to dismiss early.
Implementation
VdSnackbarEntry showVdSnackbar(
BuildContext context, {
required String message,
String? action,
VoidCallback? onAction,
Widget? leadingIcon,
bool closable = false,
Duration duration = const Duration(seconds: 4),
}) {
final overlay = Overlay.of(context, rootOverlay: true);
final entry = VdSnackbarEntry._();
late final OverlayEntry overlayEntry;
void dismiss() {
entry._dismiss();
}
overlayEntry = OverlayEntry(
builder: (ctx) => _VdSnackbarOverlay(
message: message,
action: action,
onAction: () {
onAction?.call();
dismiss();
},
leadingIcon: leadingIcon,
closable: closable,
onClose: dismiss,
onDismissed: () {
overlayEntry.remove();
entry._onRemoved();
},
isVisible: entry._isVisible,
),
);
entry._overlayEntry = overlayEntry;
entry._dismissCallback = dismiss;
overlay.insert(overlayEntry);
// Auto-dismiss
if (duration > Duration.zero) {
entry._timer = Timer(duration, dismiss);
}
return entry;
}