запланированные уведомления не отображаются (Flutter_local_notifications) - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь отправить уведомление, используя пакет уведомления о флаттере

Я вижу уведомление, если сразу показываю его с помощью .show (), но когда я пытаюсь запланировать с помощью .schedule (), оно не появляется. Я вижу, что это запланировано с помощью await flutterLocalNotificationsPlugin.pendingNotificationRequests ();

Я попробовал тот же код в новом проекте флаттера, и он действительно работает там, поэтому я должен делать что-то другое в моем реальном проекте, я просто не знаю, что.

Мой манифест выглядит так:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bap_todo_flutter">

    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="bap_todo_flutter"
        android:icon="@mipmap/ic_launcher">
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            </intent-filter>
        </receiver>
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

Мое состояние выглядит так:

FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      new FlutterLocalNotificationsPlugin();

  @override
  void initState() {
    super.initState();
    var initializationSettingsAndroid =
        new AndroidInitializationSettings('@mipmap/ic_launcher');
    var initializationSettingsIOS = new IOSInitializationSettings();
    var initializationSettings = new InitializationSettings(
        initializationSettingsAndroid, initializationSettingsIOS);
    flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);
   }

И я использую простую кнопку RaisedButton, чтобы запланировать уведомление:

RaisedButton(
  child: Text("notification"),
  onPressed: () async {
        var scheduledNotificationDateTime =
    new DateTime.now().add(new Duration(seconds: 2));
        var androidPlatformChannelSpecifics =
    new AndroidNotificationDetails('myalarmapplication.alarm',
       'Alarm Channel', 'Flutter Todo Alarm');
    var iOSPlatformChannelSpecifics =
       new IOSNotificationDetails();
    NotificationDetails platformChannelSpecifics =
       new NotificationDetails(androidPlatformChannelSpecifics,
          iOSPlatformChannelSpecifics);
    await flutterLocalNotificationsPlugin
      .schedule(
      1,
      'Alarm',
      'Alarm going off',
      scheduledNotificationDateTime,
      platformChannelSpecifics);
   },
),

1 Ответ

0 голосов
/ 29 июня 2019

У меня была та же проблема, но я не мог найти решение в Интернете, однако позже я понял, что запуск flutter clean, а затем flutter run помог мне.

Вы должны по существу очистить свойпостроить и восстановить его снова.Надеюсь, что это работает.

...