📌  相关文章
📜  PluginRegistry 无法转换为 FlutterEngine GeneratedPluginRegistrant.registerWith(registry) (1)

📅  最后修改于: 2023-12-03 15:03:47.935000             🧑  作者: Mango

PluginRegistry 无法转换为 FlutterEngine GeneratedPluginRegistrant.registerWith(registry)

这个错误通常出现在 Flutter 应用程序中使用插件时。它表明您的代码中存在问题,需要一些调整才能正常工作。下面将为您介绍出现这个错误的原因以及如何解决它。

错误原因

出现这个错误的原因是因为 Flutter 的插件注册 API 发生了一些变化。在 1.12 版本之前, 插件的注册需要使用 PluginRegistry 类型进行。而在 1.12 版本之后,FlutterEngine 代替了 PluginRegistry 类型来完成插件的注册。因此,如果您使用的是 Flutter 1.12 版本之后的版本,您需要修改您的注册代码,以适应这些变化。

解决方法

正确的解决方法是使用 FlutterEngine 注册插件,而不是 PluginRegistry。在您的 main.dart 文件中找到下面的代码:

import io.flutter.plugins.GeneratedPluginRegistrant;

void main() {
  // ...
  GeneratedPluginRegistrant.registerWith(registry);
  // ...
}

将其替换为以下代码:

import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;

void main() async {
  // ...
  var flutterEngine = FlutterEngine();
  await flutterEngine .dartExecutor.executeDartEntrypoint(
    // TODO: Replace with your Flutter app's entry point
    const FlutterEntrypoint("main")
  );
  GeneratedPluginRegistrant.registerWith(flutterEngine);
  // ...
}

这将创建一个 FlutterEngine 对象,并使用它来注册插件。请注意,在此之前,您必须 import io.flutter.embedding.engine.FlutterEngine 包。

现在再次运行您的应用程序,应该就不会再看到 PluginRegistry 无法转换为 FlutterEngine GeneratedPluginRegistrant.registerWith(registry) 这个错误了。

结论

这个问题的解决方法很简单,只需使用正确的 API 注册插件即可。但是,它提醒我们在开发 Flutter 应用程序时需要格外小心,以避免出现这些问题。如果您遇到类似的错误,您可以先确保您的依赖库与框架版本相匹配,并检查您的代码以查找任何错误。

希望这篇文章有助于您成功解决 PluginRegistry 无法转换为 FlutterEngine GeneratedPluginRegistrant.registerWith(registry) 错误。