未在通道 plugins.flutter.io/image_picke 上找到方法 pickImage 的实现

No implementation found for method pickImage on channel plugins.flutter.io/image_picke

我正在我的应用中实现 image_picker。那没有显示任何警告或消息,但是当我在 Android 模拟器中 运行 它时,它在控制台中显示错误:

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method pickImage on channel plugins.flutter.io/image_picker)
E/flutter ( 5074): #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
E/flutter ( 5074): <asynchronous suspension>
E/flutter ( 5074): #1      ImagePicker.pickImage (package:image_picker/image_picker.dart:53:40)
E/flutter ( 5074): <asynchronous suspension>

您是从相机还是图库中挑选图像?如果你想从你需要使用真实设备的相机中挑选图像,模拟有时会出错,确保你提供了来源:

var image = await ImagePicker.pickImage(source: ImageSource.gallery);

当您添加新的依赖项并收到此错误时,您应该停止该应用程序,然后 运行 再次从冷状态重新启动它。热重启将不起作用。

我通过简单地运行以下命令解决了我的问题:

flutter clean 

在此之后,我的 Android 模拟器开始正常工作。

对于那些在 Android 上仍有问题的人, 这个解决了我的..

由于某些原因 image_picker 插件没有自动注册

转到 Android > app > main > java> io> flutter > plugins 并编辑 GeneratedPluginRegistrant.java

  1. import io.flutter.plugins.imagepicker.ImagePickerPlugin;

  2. 将此行粘贴到方法 registerWith ImagePickerPlugin.registerWith(registry.registrarFor("io.flutter.plugins.imagepicker.ImagePickerPlugin"));

我遇到了同样的问题,但是在深入研究后,上面提到的 none 答案有助于解决这个问题,我发现 android 库所需的 minSdkVersion 高于 19,所以去 android-> app-> build.gradle 将 minSdkVersion 更改为 19 并且 运行 app 从冷启动开始。

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "you package name"
        minSdkVersion 19   // <--here is the changes 
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

尝试添加:

进口'dart:async';

颤动干净

当您将依赖项添加到 pubspec yaml 文件并热刷新应用程序时,会发生这种情况。您应该重新构建/重新运行 应用程序,然后它才能正常工作。

尝试更改 image_picker 版本:image_picker: ^0.6.0+9

首先,确保清理你的 flutter 项目

flutter clean

然后在 Android 工作室, 文件 > 使缓存失效并重新启动

flutter run

只需从您的模拟器中卸载应用程序并按 flutter clean 清理项目,然后 flutter run

我遇到了同样的问题

对于碰巧遇到此问题的任何人...只需停止该应用程序,然后 运行 再次

只是一个简单的“将其关闭并重新打开!”

由于某些原因,由于最新更新,静态方法 pickImage 不可用。 为此,您必须调用 methd getImage(source: ImageSource)

    ImagePicker imagePicker = ImagePicker();
final imageFile = await imagePicker.getImage(source: ImageSource.camera);

更新依赖项解决了我的错误。

Android#

API < 29

无需配置 - 插件应该开箱即用。

API 29+

将 android:requestLegacyExternalStorage="true" 作为属性添加到 AndroidManifest.xml 中的标签。在针对 Android Q.

的应用中,该属性默认为 false

之后:

flutter clean
flutter pub get
flutter run

你又开始编码了...

已经关注了所有回复,但我的情况仍然没有解决。仍然抛出“在通道 plugins.flutter.io/image_picker 上找不到方法 pickImage 的实现”

我遇到了同样的问题。 我的解决方案是删除另一个插件:flutter-facebook-auth.

另外,我在这里找到了它:github.com/flutter/flutter/issues/72898

真正有用的评论:

Anyway, that's really bad situation when some plugin that is not used in the part of code crashes the app, and debug tells you that issues is with another one plugin.

如果您使用的是 flutter_facebook_auth,则必须按照文档 (https://facebook.meedu.app/#/android) 所示进行配置,否则,image_picker 将无法正常工作

Taken from the flutter_facebook_auth documentation

删除 flutter_facebook_auth 包后,运行 flutter cleanflutter pub get 和 运行 应用程序将正常工作

这不是问题 当您添加新的依赖项并收到此错误时,您应该停止该应用程序并且 运行 它 again.Hot 重新启动将不起作用。