fcm_config 3.0.0-nullsafety.0
fcm_config: ^3.0.0-nullsafety.0 copied to clipboard

Flutter Android iOS macOS

This flutter package is made to merge between firebase_messaging package and flutter_local_notifications

fcm_config #

What can this packge do #

  • Show fcm notification while app is in forground
  • Easly recieve incoming notification where you are
  • Easly recieve clicked where you are
  • Notification is an object

Setup #

Android #


    buildscript {
      dependencies {
        // ... other dependencies
        classpath 'com.google.gms:google-services:4.3.3'


    // under apply plugin: 'com.android.application' or at the end of file
    apply plugin: 'com.google.gms.google-services'

if you are faceing multidex error while building your app you can do one of this

    minSdkVersion 21 


     android {
         defaultConfig {
             // ...
             minSdkVersion 16
             targetSdkVersion 28
             multiDexEnabled true 
     dependencies {
       implementation 'com.android.support:multidex:1.0.3'

Ios #

MacOs #

Dart/Flutter #


 await FCMConfig.init();
 //or if you need to listen background notification
 //Pass top level function

  Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage  message) async {
   print("Handling a background message: ${message.messageId}");
  void main() async {
    FCMConfig.init(onBackgroundMessage: _firebaseMessagingBackgroundHandler);
      home: MyHomePage(),

Get token

FCMConfig.getToken().then((token) {

To get notification that launched the application

 await FCMConfig.getInitialMessage();// may be null

Now to listen to incomming notification :

  • First option

    class MyScreen extends StatelessWidget {
      Widget build(BuildContext context) {
        return FCMNotificationListener(
              (RemoteMessage notification, void Function() setState) {},
          child: SizedBox(),
  • Second option

     class MyScreen extends StatefulWidget {
       _MyScreenState createState() => _MyScreenState();
     class _MyScreenState extends State<MyScreen>
         with FCMNotificationMixin {
       Widget build(BuildContext context) {
         return SizedBox();
       void onNotify(RemoteMessage notification) {
         // do some thing

To listen notification tap there is FCMNotificationClickListener and FCMNotificationClickMixin but be aware that its recommended to use it in main screen

Localize your notification #

Till that moment firbase_messaging plugin dont give any option to localize notification according to app locale So we cand do this workaround

1- First you have to insure your locale are save using any package like shared_prefrence 2- Add the following lines to the didFinishLaunchingWithOptions method in the AppDelegate.m/AppDelegate.swift file of your iOS project Objective-C:

if (@available(iOS 10.0, *)) {
  [UNUserNotificationCenter currentNotificationCenter].delegate = (id<UNUserNotificationCenterDelegate>) self;


if #available(iOS 10.0, *) {
  UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate

3- You have to make sure that the notification not send with notification object just data this will prevent the default notification to be displayed example


4- Use background handler to view your translated notification

Map<String, Map<String, String>> translations = {
  "ar": {
    "New_Order_Title": "طلب جديد",
    "New_Order_Body": "لديك طلب جديد برقم{args}",
  "en": {
    "New_Order_Title": "New order",
    "New_Order_Body": "You has new order with number {args}",
Future<void> _firebaseMessagingBackgroundHandler(
    RemoteMessage _notification) async {
  var strings = translations[(await getSavedLocale()).languageCode];
  if (strings == null) strings = translations["en"];
  String title = strings[_notification.data["title_key"]];
  String body = strings[_notification.data["body_key"]]
      .replaceAll("{args}", _notification.data["body_args"]);
  FCMConfig.displayNotification(title: title, body: body);

Future<Locale> getSavedLocale() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.reload();
  var locale = prefs.containsKey("locale") ? prefs.getString("locale") : null;
  return Locale(locale ?? Platform.localeName);

  void main() async {
    FCMConfig.init(onBackgroundMessage: _firebaseMessagingBackgroundHandler);
      home: MyHomePage(),
pub points

This flutter package is made to merge between firebase_messaging package and flutter_local_notifications

Repository (GitHub)
View/report issues


API reference




Apache 2.0 (LICENSE)


firebase_core, firebase_messaging, flutter, flutter_local_notifications


Packages that depend on fcm_config