MissingPluginException(реализация для инициализации метода на канале dexterous.com/flutter/local_notifications не найдена)

Я пытаюсь настроить самую простую версию локальных уведомлений flutter, но продолжаю получать эту ошибку

      [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: MissingPluginException(No implementation found for method initialize on channel dexterous.com/flutter/local_notifications)

Когда я смотрю на мой автоматически сгенерированный java-файл регистранта плагина

      package io.flutter.plugins;

import androidx.annotation.Keep;
import androidx.annotation.NonNull;

import io.flutter.embedding.engine.FlutterEngine;

/**
 * Generated file. Do not edit.
 * This file is generated by the Flutter tool based on the
 * plugins that support the Android platform.
 */
@Keep
public final class GeneratedPluginRegistrant {
  public static void registerWith(@NonNull FlutterEngine flutterEngine) {
    flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.firestore.FlutterFirebaseFirestorePlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.auth.FlutterFirebaseAuthPlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.firebasedynamiclinks.FirebaseDynamicLinksPlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin());
    flutterEngine.getPlugins().add(new com.byneapp.flutter_config.FlutterConfigPlugin());
    flutterEngine.getPlugins().add(new app.meedu.flutter_facebook_auth.FlutterFacebookAuthPlugin());
    flutterEngine.getPlugins().add(new com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.googlesignin.GoogleSignInPlugin());
  }
}

Я считаю, что плагин зарегистрирован. Так почему же тогда возникает ошибка? Это код, который я использую

      import 'package:flutter_local_notifications/flutter_local_notifications.dart';

class FirebaseMessagingProvider extends PushNotificationProvider {
  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

  FirebaseMessagingProvider() {
    initializeLocalNotifications();
  }

  Future<void> initializeLocalNotifications() async {
      const AndroidInitializationSettings initializationSettingsAndroid =
      AndroidInitializationSettings('app_icon');

    const AndroidNotificationChannel channel = AndroidNotificationChannel(
      'high_importance_channel', // id
      'High Importance Notifications', // title
      'This channel is used for important notifications.', // description
      importance: Importance.max,
    );

    final InitializationSettings initializationSettings =
        InitializationSettings(android: initializationSettingsAndroid);

    await flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: (_) async => print("notified"));

    await flutterLocalNotificationsPlugin
        .resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()
        ?.createNotificationChannel(channel);
  }
}

Ошибка возникает в этой строке

      await flutterLocalNotificationsPlugin.initialize(initializationSettings,
    onSelectNotification: (_) async => print("notified"));

Я посмотрел на следующую проблему github

https://github.com/MaikuB/flutter_local_notifications/issues/238

но, похоже, он нацелен в основном на проекты flutter 1, где вам приходилось регистрировать плагины самостоятельно. Я попробовал с application.kt, но это не сработало.

Так почему же появляется эта ошибка?

Версия Flutter: Flutter 2.2.0 • стабильный канал • https://github.com/flutter/flutter.git

2 ответа

решение здесь простое, я только сегодня столкнулся с ним, дело в том, что нужно позвонить flutterLocalNotificationsPlugin.initialize() на ранней стадии жизненного цикла вашего виджета, особенно потому, что плагин не может быть правильно инициализирован

           @override
  void initState() {
    super.initState();
  }

так что в вашем случае просто создайте свой initState() метод и движение FirebaseMessagingProvider() внутри него

Просто остановите запущенное приложение

запустить флаттер чистый и флаттер паб получить

и снова запустите ваше приложение

и проблема больше никогда не повторится

Попробуйте один раз.

Другие вопросы по тегам