【问题标题】:Flutter plugins not working (No implementation found for method X on channel flutter.plugins.io/Y)Flutter 插件不起作用(在通道 flutter.plugins.io/Y 上找不到方法 X 的实现)
【发布时间】:2019-10-25 01:31:44
【问题描述】:

我安装的几乎每个插件(到目前为止,Facebook 登录、Google 登录和图像选择器)都出现此错误。 我的 Flutter 项目是使用 Kotlin 和 Swift 支持以及 AndroidX 构建的。

我已经尝试使用flutter clean 清理 Flutter 构建缓存,并从模拟器中卸载应用程序。

这是我的pubspec.yaml

version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  material_design_icons_flutter: 3.2.3895
  image_picker: ^0.6.1+8
  firebase_auth: ^0.14.0+1
  google_sign_in: ^4.0.6
  flutter_facebook_login: ^2.0.1 
  flutter_bloc: ^0.20.1
  equatable: ^0.2.0
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

  uses-material-design: true

  module:
    androidX: true
  assets:
    - lib/assets/

我现在在 Android 上遇到这个问题,我目前没有开发 iOS 应用程序。

Flutter 的 Github 上的每个问题最终都会说“只需键入 flutter clean 就可以了”,但这并不能解决任何问题。

【问题讨论】:

  • 你是使用 Flutter 的原生宿主机,还是将 Flutter 页面嵌入到其他宿主机中?
  • 我什至不知道你指的是什么,所以我想我使用的是默认配置。

标签: android flutter flutter-dependencies


【解决方案1】:

运行flutter pub get

然后在ANDROID项目中找到io.flutter.plugins.GeneratedPluginRegistrant类。

确保 facebook 插件在那里加载:

  public static void registerWith(PluginRegistry registry) {
    if (alreadyRegisteredWith(registry)) {
      return;
    }
    FacebookLoginPlugin.registerWith(registry.registrarFor("com.roughike.facebooklogin.facebooklogin.FacebookLoginPlugin"));

    // load other plugin code...

  }

【讨论】:

  • 找到上面提到的类,没有注册Facebook插件的那一行,也没有其他插件注册。你知道为什么以及如何解决它吗?
  • 您是否在项目目录中运行了flutter pub get?你能告诉我那个输出信息吗? @sbd2
  • 我做了,输出是exit code 0。顺便说一句,我通过打开MainActivity.kt 文件并手动添加插件注册来解决这个问题。在那之后(和重建),不工作的插件开始完美地工作。我很想知道为什么这不会自动发生(如果您知道,请分享该信息)。我会接受这个答案是正确的,因为它让我走上了解决问题的正确轨道。
  • 添加注册的MainActivity.kt 示例:class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) FacebookLoginPlugin.registerWith(this.registrarFor("com.roughike.facebooklogin.facebooklogin.FacebookLoginPlugin")) ImagePickerPlugin.registerWith(this.registrarFor("io.flutter.plugins.imagepicker.ImagePickerPlugin")) } }
  • 恭喜!颤振构建工具似乎无法修改文件GeneratedPluginRegistrant.kt。我来宾说您的文件GeneratedPluginRegistrant.kt 是只读的。确保该文件不是只读文件,然后再次运行flutter pub get。 @sbd2
【解决方案2】:

确保按照说明设置 Facebook 登录插件,即 androidmanifest.xml,在 Facebook 开发者帐户、build.gradle 和插件的 firebase 控制台中。谷歌登录也是如此。 如果这是为了,我建议您注释掉插件并构建以查看错误何时出现。

【讨论】:

  • 对于 Facebook 登录我已经完成了完整的设置(让它在另一个应用程序上运行,我不知道为什么它在这里不起作用)。对于 ImagePicker 的情况,文档说它应该开箱即用(这并不完全正确,因为我必须添加存储权限)但它也不起作用。
猜你喜欢
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多