import 'package:flutter/material.dart'; import 'package:awesome_snackbar_content/awesome_snackbar_content.dart'; /// Helper wrappers around `awesome_snackbar_content` so that callers /// can show snackbars with a consistent look and only specify a message and /// semantic type. /// Enumeration used by callers; the mapping to the package’s /// [ContentType] is internal. enum SnackType { success, info, warning, error } ContentType _mapSnackType(SnackType t) { switch (t) { case SnackType.success: return ContentType.success; case SnackType.info: return ContentType.help; case SnackType.warning: return ContentType.warning; case SnackType.error: return ContentType.failure; } } /// Core function used by all of the convenience helpers below. void showAwesomeSnackBar( BuildContext context, { required String title, required String message, required SnackType snackType, }) { // Add margin and padding so even very short messages feel substantial. final snackBar = SnackBar( elevation: 0, behavior: SnackBarBehavior.floating, // give floating snackbar some breathing room margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), padding: EdgeInsets.zero, backgroundColor: Colors.transparent, content: Container( padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 8), child: AwesomeSnackbarContent( title: title, message: message, contentType: _mapSnackType(snackType), ), ), ); ScaffoldMessenger.of(context) ..hideCurrentSnackBar() ..showSnackBar(snackBar); } void showSuccessSnackBar(BuildContext context, String message) => showAwesomeSnackBar( context, title: 'Success', message: message, snackType: SnackType.success, ); void showErrorSnackBar(BuildContext context, String message) => showAwesomeSnackBar( context, title: 'Error', message: message, snackType: SnackType.error, ); void showInfoSnackBar(BuildContext context, String message) => showAwesomeSnackBar( context, title: 'Info', message: message, snackType: SnackType.info, ); void showWarningSnackBar(BuildContext context, String message) => showAwesomeSnackBar( context, title: 'Warning', message: message, snackType: SnackType.warning, );