web-dev-qa-db-fra.com

PluginRegistry ne peut pas être converti en FlutterEngine

Dès que j'ai mis à jour le flottement vers la version 1.12.13, j'ai trouvé ce problème et je ne peux pas le résoudre. J'ai fait comme le tutoriel firebase_messaging envoyé et j'ai obtenu l'erreur suivante: "erreur: types incompatibles: PluginRegistry ne peut pas être converti en FlutterEngine GeneratedPluginRegistrant.registerWith (registre);" Mon code est le suivant:

package io.flutter.plugins;

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;

import Android.app.NotificationChannel;
import Android.app.NotificationManager;
import Android.os.Build;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    FlutterFirebaseMessagingService.setPluginRegistrant(this);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
      NotificationChannel channel = new NotificationChannel("messages","Messages", NotificationManager.IMPORTANCE_LOW);
  NotificationManager manager = getSystemService(NotificationManager.class);
  manager.createNotificationChannel(channel);
    }
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    GeneratedPluginRegistrant.registerWith(registry);
  }
}
19
Gabriel G. Pavan

En plus de la réponse de DomingoMG, n'oubliez pas de supprimer

@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);

à partir du fichier d'activité principal sous le dossier Android. Sinon, vous obtiendrez une erreur.

1
Axes Grinds

J'ai ajouté uniquement la classe d'eau en plus des étapes du package de messagerie Firebase et cela a été résolu:

import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;
public final class FirebaseCloudMessagingPluginRegistrant{
public static void registerWith(PluginRegistry registry) {
    if (alreadyRegisteredWith(registry)) {
        return;
    }
    FirebaseMessagingPlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}

private static boolean alreadyRegisteredWith(PluginRegistry registry) {
    final String key = FirebaseCloudMessagingPluginRegistrant.class.getCanonicalName();
    if (registry.hasPlugin(key)) {
        return true;
    }
    registry.registrarFor(key);
    return false;
}}
0
ctnr