flutter-notifications

$npx mdskill add HoangNguyen0403/agent-skills-standard/flutter-notifications

1. **Set up packages** — Add `firebase_messaging` (Push) and `flutter_local_notifications` (Local/Foreground). 2. **Request permission** — Prime users with custom dialog explaining benefits _before_ system prompt. 3. **Handle all lifecycle states** — Implement handlers for Foreground, Background, and Terminated states. 4. **Validate payloads** — Strictly validate notification data before navigating to screens. 5. **Clear badges** — Manually clear iOS app badges when visiting relevant screens.

SKILL.md

.github/skills/flutter-notificationsView on GitHub ↗
---
name: flutter-notifications
description: Integrate push and local notifications using FCM and flutter_local_notifications. Use when adding push or local notification support to Flutter apps.
metadata:
  triggers:
    files:
    - '**/*notification*.dart'
    - '**/main.dart'
    keywords:
    - FirebaseMessaging
    - FlutterLocalNotificationsPlugin
    - FCM
    - notification
    - push
---
# Flutter Notifications

## **Priority: P1 (OPERATIONAL)**


## Implementation Workflow

1. **Set up packages** — Add `firebase_messaging` (Push) and `flutter_local_notifications` (Local/Foreground).
2. **Request permission** — Prime users with custom dialog explaining benefits _before_ system prompt.
3. **Handle all lifecycle states** — Implement handlers for Foreground, Background, and Terminated states.
4. **Validate payloads** — Strictly validate notification data before navigating to screens.
5. **Clear badges** — Manually clear iOS app badges when visiting relevant screens.

### Lifecycle Handlers Example

See [implementation examples](references/implementation.md) for foreground, background, and terminated state notification handling.

[Implementation Details](references/implementation.md)

## Anti-Patterns

- **No Early Permission Popups**: Show primer dialog explaining value first
- **No Missing `getInitialMessage()`**: Always handle "open from terminated" startup state
- **No Uncleared Badges**: Manually clear notification badges upon related screen visits
- **No Unvalidated Payloads**: Validate all JSON data before navigating on click

## Related Topics

flutter-navigation | mobile-ux-core | firebase/fcm

More from HoangNguyen0403/agent-skills-standard

SkillDescription
android-agp-upgradeUpgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.
android-architectureApply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns.
android-background-workImplement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers.
android-composeBuild high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects.
android-compose-migrationMigrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.
android-concurrencyWrite correct coroutine scopes, Flow collection, and dispatcher injection in Android. Use when writing suspend functions, choosing between StateFlow and SharedFlow, or injecting Dispatchers for testability.
android-deploymentConfigure release signing, R8 obfuscation, and App Bundle publishing for Android. Use when setting up signing configs, enabling minification, adding ProGuard keep rules, or preparing for Play Store submission.
android-design-systemEnforce Material Design 3 theming and design token usage in Jetpack Compose. Use when implementing M3 components, color schemes, typography, or design tokens.
android-diConfigure Hilt dependency injection with proper scoping, modules, and constructor injection in Android. Use when setting up Hilt DI, defining modules, or configuring component scoping.
android-edge-to-edgeMigrate a Jetpack Compose app to edge-to-edge display and fix system bar inset issues. Use when UI components are obscured by navigation/status bars, fixing IME insets, or enabling edge-to-edge for SDK 35+.