You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Image Picker插件调用报错求助:MissingPluginException问题

解决image_picker的MissingPluginException问题

核心错误是MissingPluginException(No implementation found for method pickImage on channel plugins.flutter.io/image_picker),这是插件未正确关联到原生项目导致的,按以下步骤排查解决:

1. 确保依赖安装到位

  • 检查pubspec.yaml中已添加image_picker依赖,格式如下:
    dependencies:
      flutter:
        sdk: flutter
      image_picker: ^1.0.4 # 替换为最新稳定版本
    
  • 执行flutter pub get拉取依赖。

2. 完全重启应用,不要用热重载

插件安装后需要重新构建原生代码,热重载/热重启不会生效,必须:

  • 停止当前运行的应用
  • 执行flutter run重新启动

3. 清理缓存后重新构建

如果上述步骤无效,清理项目缓存再重新构建:

flutter clean
flutter pub get
flutter run

4. 检查平台权限配置

Android端

打开android/app/src/main/AndroidManifest.xml,添加必要权限:

<!-- Android 13+ 读取相册权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<!-- 旧版本Android 读取相册权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<!-- 如果需要使用相机,添加相机权限 -->
<uses-permission android:name="android.permission.CAMERA"/>

iOS端

打开ios/Runner/Info.plist,添加权限描述:

<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册选择图片</string>
<key>NSCameraUsageDescription</key>
<string>需要访问相机拍摄图片</string>

5. 修复代码中的空值处理问题

你的pickImage函数在未选择图片时会返回null,但gallarypick中直接将返回值赋值给非空的Uint8List im,会引发空值错误,修改如下:

gallarypick()async{
  Uint8List? im = await _authController.pickImage(ImageSource.gallery);
  if(im != null){
    setState(() {
      _image = im;
    });
  }
}

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:50:18