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

Flutter iOS端视频相册选择器二次选择崩溃问题求助

问题描述
  • Flutter版本:3.13.2
  • 使用插件:image_picker 1.0.4
  • 异常场景:iOS设备从相册选择视频时,首次选择正常,二次选择必定崩溃;Android设备及选择图片时无此问题
  • 崩溃日志:Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread
  • 相关代码:
TextButton(
  onPressed: () async {
    final ImagePicker picker = ImagePicker();
    final XFile? galleryVideo =
        await picker.pickVideo(source: ImageSource.gallery);
  },
  child: Text("Pick video from gallery"),
),
  • 已尝试操作:升级Flutter及插件至最新版本,问题未解决
解决方案尝试
  1. 强制在主线程执行视频选择操作
    崩溃日志指向后台线程修改UI布局,可将picker调用包裹在WidgetsBinding.instance.runOnUiThread中,确保操作在主线程执行:

    TextButton(
      onPressed: () async {
        await WidgetsBinding.instance.runOnUiThread(() async {
          final ImagePicker picker = ImagePicker();
          final XFile? galleryVideo =
              await picker.pickVideo(source: ImageSource.gallery);
        });
      },
      child: Text("Pick video from gallery"),
    ),
    
  2. 复用ImagePicker实例
    每次创建新实例可能导致iOS侧资源未正确释放,尝试全局复用实例:

    // 在组件外部或State类中定义全局实例
    final ImagePicker _picker = ImagePicker();
    
    // 按钮点击逻辑
    TextButton(
      onPressed: () async {
        final XFile? galleryVideo =
            await _picker.pickVideo(source: ImageSource.gallery);
      },
      child: Text("Pick video from gallery"),
    ),
    
  3. 同步Flutter引擎状态
    在选择视频前后手动触发UI状态同步,避免线程冲突:

    TextButton(
      onPressed: () async {
        WidgetsBinding.instance.ensureVisualUpdate();
        final XFile? galleryVideo =
            await _picker.pickVideo(source: ImageSource.gallery);
        WidgetsBinding.instance.addPostFrameCallback((_) {
          // 处理视频选择后的逻辑,比如更新组件状态
        });
      },
      child: Text("Pick video from gallery"),
    ),
    
  4. 检查iOS原生配置
    确认Info.plist中相册权限配置正确,避免权限逻辑导致的线程冲突:

    <key>NSPhotoLibraryUsageDescription</key>
    <string>需要访问相册选择视频</string>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:33:13