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

Android中使用image_picker选图时Flutter应用崩溃问题

解决image_picker插件导致的"lateinit property callbackManager has not been initialized"崩溃

从你提供的错误日志来看,崩溃的核心原因非常明确:你的Android原生MainActivity里声明的callbackManager变量是lateinit类型,但在调用它的onActivityResult方法时还没有完成初始化。这个变量用于处理image_picker插件返回的图片选择结果,未初始化就调用自然会触发运行时异常。

下面是具体的修复步骤:

步骤1:在MainActivity中正确初始化CallbackManager

打开你的MainActivity.kt文件,找到callbackManager的声明,然后在onCreate方法中完成初始化操作:

import com.facebook.CallbackManager
import com.facebook.CallbackManagerFactory

class MainActivity : FlutterActivity() {
    private lateinit var callbackManager: CallbackManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 关键:在onCreate生命周期中初始化CallbackManager
        callbackManager = CallbackManagerFactory.create()
    }

    // 如果你保留了onActivityResult方法,确保callbackManager初始化后再调用它
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        callbackManager.onActivityResult(requestCode, resultCode, data)
        super.onActivityResult(requestCode, resultCode, data)
    }
}

步骤2:适配新版image_picker的Activity Result API(可选)

如果你使用的是v0.8.5及以上版本的image_picker插件,它已经迁移到AndroidX的Activity Result API,不再需要手动维护callbackManager。这种情况下,你可以直接删除MainActivity中所有关于callbackManager的代码,插件会自动处理图片选择的结果回调。

你可以查看pubspec.yaml里的image_picker版本号,再对照官方配置要求确认是否需要这一步操作。

额外验证点

  • 确保你的Android项目已经迁移到AndroidX(新版image_picker的硬性要求)
  • 检查AndroidManifest.xml是否已添加必要权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

按照上述步骤处理后,重新运行项目,调用图片选择方法时就不会再出现这个崩溃了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:51:19