Flutter Nice Toast
A beautiful and highly customizable toast notification package for Flutter with animations and various predefined styles. Shows toasts without requiring BuildContext.
📱 Screenshots
![]() |
![]() |
![]() |
Top Position | Center Position | Bottom Position |
Features
- 🎨 Elegant Design: Stylish and clean toast notifications with smooth animations
- 🔔 Multiple Styles: Pre-built themes for success, error, warning and info toasts
- 🔧 Highly Customizable: Create your own toast themes with custom colors, icons, and gradients
- 📱 Flexible Positioning: Display toasts at the top, center, or bottom of the screen
- 🖱️ Interactive: Support for dismissal by swipe, tap callbacks, and persistent toasts
- ⚡ Simple API: Clean, intuitive API for easy implementation
- 🧩 No Context Required: Display toasts from anywhere in your app without BuildContext
Installation
Add this to your package's pubspec.yaml
file:
dependencies:
flutter_nice_toast: ^0.1.0
Then run:
flutter pub get
Usage
Import the package:
import 'package:flutter_nice_toast/flutter_nice_toast.dart';
Setup
First, initialize the toast system in your app's entry point and add the navigator key to your MaterialApp:
void main() {
// Initialize NiceToast and get the navigator key
final navigatorKey = NiceToast.init();
runApp(MyApp(navigatorKey: navigatorKey));
}
class MyApp extends StatelessWidget {
final GlobalKey<NavigatorState> navigatorKey;
const MyApp({super.key, required this.navigatorKey});
@override
Widget build(BuildContext context) {
return MaterialApp(
// Set the navigator key to enable context-free toast display
navigatorKey: navigatorKey,
home: HomePage(),
// Other app configurations...
);
}
}
Basic Usage
Show predefined toast notifications from anywhere in your app without BuildContext:
// Show an error toast
NiceToast.error(
message: "An error occurred!",
title: "Error", // Optional
);
// Show a success toast
NiceToast.success(
message: "Operation completed successfully!",
title: "Success", // Optional
);
// Show a warning toast
NiceToast.warning(
message: "Please proceed with caution!",
title: "Warning", // Optional
);
// Show an info toast
NiceToast.info(
message: "System will be updated tomorrow.",
title: "Information", // Optional
);
Customization Options
All toast types support these customization options:
NiceToast.success(
message: "Operation completed successfully!",
title: "Success",
position: ToastPosition.top, // top (default), center, or bottom
duration: const Duration(seconds: 5), // Duration before auto-dismiss
margin: 50.0, // Margin from the screen edge
dismissible: true, // Allow swipe to dismiss
onDismiss: () {
// Handle toast dismissal
},
onTap: () {
// Handle toast tap
},
);
Persistent Toasts
Display toasts that don't auto-dismiss and require user action to close:
NiceToast.errorPersistent(
message: "This error requires your attention!",
title: "Critical Error",
);
Persistent versions are available for all toast types: successPersistent
, warningPersistent
, infoPersistent
.
Custom Toasts
Create your own toast themes:
final customTheme = ToastTheme(
backgroundColor: Colors.purple,
borderColor: Colors.deepPurple,
iconData: Icons.stars,
textColor: Colors.white,
iconColor: Colors.white,
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Colors.purple, Colors.deepPurple],
),
borderRadius: 12.0,
borderWidth: 1.5,
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 16),
);
NiceToast.custom(
message: "This is a completely custom toast!",
title: "Custom Toast",
theme: customTheme,
position: ToastPosition.center,
);
Manually Dismissing Toasts
You can programmatically dismiss the current toast:
NiceToast.dismiss();
Example
See the /example
directory for a complete demo app.
License
This package is available under the MIT License.
Libraries
- flutter_nice_toast
- A customizable toast notification package for Flutter applications.