title: I can't make background service in flutter with rabbitmq
body: <p>In the application I use rabbitmq, background_fetch and flutter_local_notifications.
  When the application is launched or minimized everything works fine, but when it is closed I cannot run my application in background, i can not find any information about this, all another questions only for FCM, no more info about flutter with amqp, I am a newbee in this framework</p>
  <p><strong>main.dart</strong></p>
  <pre><code>Future&lt;void&gt; backgroundFetchHeadlessTask(String taskId) async {
  
    await Rabbitmq.getDelivery();
  
    BackgroundFetch.finish(taskId);
  }
  
  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
  
  // Streams are created so that app can respond to notification-related events since the plugin is initialised in the `main` function
  final BehaviorSubject&lt;ReceivedNotification&gt; didReceiveLocalNotificationSubject = BehaviorSubject&lt;ReceivedNotification&gt;();
  
  final BehaviorSubject&lt;String&gt; selectNotificationSubject = BehaviorSubject&lt;String&gt;();
  
  NotificationAppLaunchDetails notificationAppLaunchDetails;
  
  void main() async {
  
    runApp(MyApp());
  
    await initPlatformState();
    
  }
  
  Future&lt;void&gt; initPlatformState() async {
    
      BackgroundFetch.configure(BackgroundFetchConfig(
          startOnBoot: true,
          minimumFetchInterval: 15,
          stopOnTerminate: false,
          enableHeadless: true,
          requiresBatteryNotLow: false,
          requiresCharging: false,
          requiresStorageNotLow: false,
          requiresDeviceIdle: false,
          requiredNetworkType: NetworkType.ANY
      ), (String taskId) async {
          await backgroundFetchHeadlessTask(taskId);
        } 
      );
    }
  
  class MyApp extends StatefulWidget {
    @override
    _MyAppState createState() =&gt; _MyAppState();
  }
  
  class _MyAppState extends State&lt;MyApp&gt; {
  
    @override
    void initState() {
      super.initState();
      _requestIOSPermissions();
      _configureDidReceiveLocalNotificationSubject();
      _configureSelectNotificationSubject();
  
      BackgroundFetch.registerHeadlessTask(backgroundFetchHeadlessTask);
      
    }
  
    void _requestIOSPermissions() {
      flutterLocalNotificationsPlugin
          .resolvePlatformSpecificImplementation&lt;
              IOSFlutterLocalNotificationsPlugin&gt;()
          ?.requestPermissions(
            alert: true,
            badge: true,
            sound: true,
          );
    }
  
    void _configureDidReceiveLocalNotificationSubject() {
      didReceiveLocalNotificationSubject.stream
          .listen((ReceivedNotification receivedNotification) async {
        await showDialog(
          context: context,
          builder: (BuildContext context) =&gt; CupertinoAlertDialog(
            title: receivedNotification.title != null
                ? Text(receivedNotification.title)
                : null,
            content: receivedNotification.body != null
                ? Text(receivedNotification.body)
                : null,
            actions: [
              CupertinoDialogAction(
                isDefaultAction: true,
                child: Text('Ok'),
                onPressed: () async {
                  Navigator.of(context, rootNavigator: true).pop();
                  await Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) =&gt;
                          LandingPage(selectedPage: 3),
                          //SecondScreen(receivedNotification.payload),
                    ),
                  );
                },
              )
            ],
          ),
        );
      });
    }
  
    void _configureSelectNotificationSubject() {
      selectNotificationSubject.stream.listen((String payload) async {
        await Navigator.push(
          context,
          MaterialPageRoute(builder: (context) =&gt; LandingPage(selectedPage: 3)),//SecondScreen(payload)),
        );
      });
    }
  
    @override
    void dispose() {
      didReceiveLocalNotificationSubject.close();
      selectNotificationSubject.close();
      super.dispose();
    }
  
    @override
    Widget build(BuildContext context) {
     return MaterialApp(
       debugShowCheckedModeBanner: false,
        title: 'My first app',
        theme: ThemeData(
          primarySwatch: Colors.blue,
          visualDensity: VisualDensity.adaptivePlatformDensity,
        ),
        home: LandingPage(),
      );
    }
  }
  </code></pre>
  <p><strong>And inside rabbitmq.dart</strong></p>
  <pre><code>class Rabbitmq {
  
    static Future getDelivery() async
    {
      var auth = await DBProvider.db.getAuth();
  
        print(hash);
  
        Client client = new Client(
          settings: ConnectionSettings(
            host: 'myhost',
            authProvider: AmqPlainAuthenticator('user', 'password')
          )
        );
  
        client
        .channel()
        .then((Channel channel) =&gt; channel.queue(&quot;queue&quot;, durable: true))
        .then((Queue queue) =&gt; queue.consume())
        .then((Consumer consumer) =&gt; consumer.listen((AmqpMessage message) async {
  
            Map messageBody = message.payloadAsJson;
  
            if(messageBody.containsKey('message') == true &amp;&amp; messageBody.containsKey('from') == true)
            {
              await Rabbitmq()._showNotification(messageBody['message'], messageBody['from']);
            }
  
          })
        );
    }
  
    Future&lt;void&gt; _showNotification(String text, String from) async {
  
      var initializationSettingsAndroid = new AndroidInitializationSettings('@mipmap/ic_launcher');
      var initializationSettingsIOS = new IOSInitializationSettings();
      var initializationSettings = new InitializationSettings(initializationSettingsAndroid, initializationSettingsIOS);
  
      FlutterLocalNotificationsPlugin().initialize(initializationSettings);
      
      final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
  
      var androidPlatformChannelSpecifics = AndroidNotificationDetails(
          'com.example.g2r_market/chat', 'Уведомления чата', 'Настройка уведомлений для чатов',
          importance: Importance.Max, priority: Priority.High, ticker: 'ticker'
      );
  
      var iOSPlatformChannelSpecifics = IOSNotificationDetails();
  
      var platformChannelSpecifics = NotificationDetails(androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
  
      await flutterLocalNotificationsPlugin.show(   
          0, from, text, platformChannelSpecifics,
          payload: 'item x');
    }
  }
  </code></pre>