Bird
Raised Fist0
Fluttermobile~5 mins

Notifications (local) in Flutter

Choose your learning style10 modes available
Introduction

Local notifications help your app tell users important things even when they are not using the app. They grab attention and remind users about events or updates.

Remind a user about a scheduled event like a meeting or a task.
Notify users about a new message or alert while the app is in the background.
Give daily tips or motivational quotes at a set time.
Warn users about low battery or app-specific warnings.
Confirm a completed action like a download or upload.
Syntax
Flutter
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

// Initialize in main or initState
var initializationSettingsAndroid = AndroidInitializationSettings('app_icon');
var initializationSettings = InitializationSettings(android: initializationSettingsAndroid);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);

// Show notification
await flutterLocalNotificationsPlugin.show(
  0, // notification id
  'Title',
  'Body text',
  NotificationDetails(android: AndroidNotificationDetails('channelId', 'channelName', importance: Importance.max, priority: Priority.high))
);

You must initialize the notification plugin before showing notifications.

Android requires a notification channel with an ID and name.

Examples
Shows a basic notification with a title and body.
Flutter
await flutterLocalNotificationsPlugin.show(
  1,
  'Hello',
  'This is a simple notification',
  NotificationDetails(android: AndroidNotificationDetails('channel1', 'General', importance: Importance.defaultImportance, priority: Priority.defaultPriority))
);
Shows a high priority notification for reminders.
Flutter
var androidDetails = AndroidNotificationDetails(
  'reminder_channel',
  'Reminders',
  importance: Importance.high,
  priority: Priority.high
);
await flutterLocalNotificationsPlugin.show(
  2,
  'Reminder',
  'Don\'t forget your meeting at 3 PM',
  NotificationDetails(android: androidDetails)
);
Sample App

This app shows a button. When pressed, it sends a local notification with a title and message.

Flutter
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

  @override
  void initState() {
    super.initState();
    var initializationSettingsAndroid = const AndroidInitializationSettings('app_icon');
    var initializationSettings = InitializationSettings(android: initializationSettingsAndroid);
    flutterLocalNotificationsPlugin.initialize(initializationSettings);
  }

  Future<void> _showNotification() async {
    var androidDetails = const AndroidNotificationDetails(
      'channelId',
      'channelName',
      importance: Importance.max,
      priority: Priority.high,
    );
    var generalNotificationDetails = NotificationDetails(android: androidDetails);

    await flutterLocalNotificationsPlugin.show(
      0,
      'Hello!',
      'This is a local notification.',
      generalNotificationDetails,
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Local Notifications Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: _showNotification,
            child: const Text('Show Notification'),
          ),
        ),
      ),
    );
  }
}
OutputSuccess
Important Notes

On Android, you need to add an app icon named 'app_icon' in your drawable folder for notifications.

Local notifications do not require internet access.

Test notifications on a real device for best results, as emulators may not show them properly.

Summary

Local notifications alert users even when the app is not open.

Initialize the notification plugin before sending notifications.

Customize notifications with channels, importance, and priority for better user experience.

Practice

(1/5)
1. What is the main purpose of local notifications in a Flutter app?
easy
A. To alert users even when the app is closed or in the background
B. To send messages to a server
C. To update the app's UI instantly
D. To change app theme colors automatically

Solution

  1. Step 1: Understand local notifications

    Local notifications are alerts shown to users even if the app is not open or running in the background.
  2. Step 2: Compare options

    Options B, C, and D describe other app features unrelated to local notifications.
  3. Final Answer:

    To alert users even when the app is closed or in the background -> Option A
  4. Quick Check:

    Local notifications alert users outside app use = A [OK]
Hint: Local notifications work when app is not active [OK]
Common Mistakes:
  • Confusing local notifications with server messages
  • Thinking notifications only work when app is open
  • Mixing UI updates with notification purpose
2. Which Flutter plugin is commonly used to show local notifications?
easy
A. firebase_messaging
B. flutter_local_notifications
C. provider
D. http

Solution

  1. Step 1: Identify notification plugins

    The plugin flutter_local_notifications is designed for local notifications in Flutter apps.
  2. Step 2: Eliminate unrelated plugins

    http is for network calls, provider for state management, firebase_messaging for push notifications, not local.
  3. Final Answer:

    flutter_local_notifications -> Option B
  4. Quick Check:

    Local notifications plugin = flutter_local_notifications [OK]
Hint: Local notifications use flutter_local_notifications plugin [OK]
Common Mistakes:
  • Choosing firebase_messaging which is for push, not local
  • Confusing state management plugins with notification plugins
  • Selecting network plugins by mistake
3. What will happen if you call show() on a local notification without initializing the plugin first?
medium
A. The notification will show normally
B. The notification will show only on Android devices
C. The notification will be delayed by 5 seconds
D. The app will crash or throw an error

Solution

  1. Step 1: Understand plugin initialization

    Local notification plugins require initialization before use to set up channels and permissions.
  2. Step 2: Consequence of missing initialization

    Calling show() without initialization causes runtime errors or crashes because the plugin is not ready.
  3. Final Answer:

    The app will crash or throw an error -> Option D
  4. Quick Check:

    Uninitialized plugin causes error/crash = B [OK]
Hint: Always initialize plugin before showing notifications [OK]
Common Mistakes:
  • Assuming notifications show without initialization
  • Thinking notifications delay automatically
  • Believing platform-specific behavior without init
4. Given this code snippet, what is the error?
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // Missing initialization here
  await flutterLocalNotificationsPlugin.show(
    0,
    'Hello',
    'Welcome to Flutter',
    NotificationDetails(
      android: AndroidNotificationDetails('channelId', 'channelName')
    )
  );
}
medium
A. WidgetsFlutterBinding.ensureInitialized() is unnecessary
B. NotificationDetails is not imported
C. Missing call to initialize() before show()
D. Notification ID cannot be zero

Solution

  1. Step 1: Check plugin initialization

    The code calls show() without calling initialize() on flutterLocalNotificationsPlugin first.
  2. Step 2: Understand consequences

    Without initialize(), the plugin is not ready, causing errors when showing notifications.
  3. Final Answer:

    Missing call to initialize() before show() -> Option C
  4. Quick Check:

    Initialize plugin before show() = C [OK]
Hint: Always initialize plugin before calling show() [OK]
Common Mistakes:
  • Ignoring the need to initialize plugin
  • Thinking zero ID is invalid
  • Assuming ensureInitialized() replaces plugin init
5. You want to create a local notification channel with high importance and priority on Android. Which code snippet correctly sets this up?
hard
A. AndroidNotificationDetails('channelId', 'channelName', importance: Importance.high, priority: Priority.high)
B. AndroidNotificationDetails('channelId', 'channelName', importance: Importance.low, priority: Priority.min)
C. AndroidNotificationDetails('channelId', 'channelName', importance: Importance.defaultImportance, priority: Priority.defaultPriority)
D. AndroidNotificationDetails('channelId', 'channelName')

Solution

  1. Step 1: Understand importance and priority

    High importance and priority make notifications more visible and urgent on Android.
  2. Step 2: Check code options

    AndroidNotificationDetails('channelId', 'channelName', importance: Importance.high, priority: Priority.high) sets importance and priority to high, matching the requirement. Others set low, default, or omit these settings.
  3. Final Answer:

    AndroidNotificationDetails('channelId', 'channelName', importance: Importance.high, priority: Priority.high) -> Option A
  4. Quick Check:

    High importance and priority = AndroidNotificationDetails('channelId', 'channelName', importance: Importance.high, priority: Priority.high) [OK]
Hint: Use Importance.high and Priority.high for urgent notifications [OK]
Common Mistakes:
  • Leaving importance and priority at default
  • Using low importance for urgent alerts
  • Omitting priority setting
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard