Flutter中关闭相机后的白屏/黑屏

Posted

技术标签:

【中文标题】Flutter中关闭相机后的白屏/黑屏【英文标题】:White/blank screen after close camera in Flutter 【发布时间】:2020-04-23 05:32:25 【问题描述】:

我有一个小部件可以在我的应用程序上拍照:

final File imageFile =
        await ImagePicker.pickImage(source: ImageSource.camera).then((test) 
      print('TEST $test');
      return test;
    );

我可以毫无错误地打开相机并拍照,但是当我尝试返回或接受我拍摄的照片时,应用程序会显示白屏,并且控制台根本没有显示任何错误。

这在真实设备(小米红米 Note 8t)上失败,但在 android 模拟器上有效。

当我拿起相机时,我能看到的唯一消息是Lost connection to device.

【问题讨论】:

【参考方案1】:

我找到了flutter 2的解决方案

在安卓中

您需要将此添加到您的 3 个清单(调试、主要、配置文件)

<uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

然后用 try catch 选择图像,像这样

Future getbehind() async 
    try
      final pickedFile = await picker.getImage(source: (ImageSource.camera:ImageSource.gallery),)
          .then((value) 
        setState(() 
          if (value != null) 
            behind = File(value.path);
           else 
            print('No image selected.');
          
        );
      );


    catch(e)

    

在发布模式下运行应用程序并完成!

【讨论】:

【参考方案2】:

修复了添加 try catch:

Future<Null> _pickImageFromCamera(BuildContext context, int index) async 
    File imageFile;
    try 
      imageFile = await ImagePicker.pickImage(source: ImageSource.camera)
      .then((picture) 
        return picture; // I found this .then necessary
      );
     catch (eror) 
      print('error taking picture $error.toString()');
    
    setState(() => this._imageFile = imageFile);
  

【讨论】:

我有同样的情况,你的代码对我不起作用 这可能与其他问题有关。这绝对解决了我的问题。您是否正在尝试包括 Flutter 2 在内的最新版本? 是的,我使用的是最新版本,包括 Flutter 2.0.3 版本,这在真实设备上也失败了(小米红米 Note 7)。我能看到的唯一消息是与设备的连接丢失。当我拿起相机。画廊工作正常 它可以完全不同。尝试使用您的代码发布一个新问题

以上是关于Flutter中关闭相机后的白屏/黑屏的主要内容,如果未能解决你的问题,请参考以下文章

Android项目实战(四十二):启动页优化,去除短暂白屏或黑屏

1分钟教你App点击秒开技能

在 iOS 上的 Fine-uploader 中关闭相机

在 Flutter 中关闭 AlertDialog

如何在 Python / Selenium 中关闭麦克风/相机弹出窗口?

防止对话框在 Flutter 中关闭外部触摸