import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: NotificationScreen(),
);
}
}
class NotificationScreen extends StatefulWidget {
const NotificationScreen({super.key});
@override
State<NotificationScreen> createState() => _NotificationScreenState();
}
class _NotificationScreenState extends State<NotificationScreen> {
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
@override
void initState() {
super.initState();
_initializeNotifications();
}
Future<void> _initializeNotifications() async {
const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher');
const DarwinInitializationSettings initializationSettingsIOS = DarwinInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
const InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS,
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
Future<void> _showNotification() async {
const AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
'channel_id',
'Local Notifications',
channelDescription: 'Channel for local notifications',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker',
);
const DarwinNotificationDetails iosDetails = DarwinNotificationDetails();
const NotificationDetails platformDetails = NotificationDetails(
android: androidDetails,
iOS: iosDetails,
);
await flutterLocalNotificationsPlugin.show(
0,
'Hello!',
'This is a local notification.',
platformDetails,
payload: 'Notification Payload',
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Local Notification Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: _showNotification,
child: const Text('Show Notification'),
),
),
);
}
}
We use the flutter_local_notifications package to handle local notifications.
In initState, we initialize the notification plugin with settings for Android and iOS, requesting permissions on iOS.
The _showNotification method creates notification details for both platforms and calls show to display the notification immediately.
The button triggers this method when tapped, so the user sees a notification with a title and message.