flutter - image_picker: ^0.7.2+1 使应用崩溃
问题描述
我在我的应用程序中使用 image_picker: ^0.7.2+1
我正在使用此代码打开相机
File _image;
final picker = ImagePicker();
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.camera);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
还在 android/app/src/main/AndroidManifest.xml 中添加了这些权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.INTERNET"
在我的相机立即打开时使用上述软件包后,应用程序崩溃并且在终端中没有错误消息,它只是说设备已断开连接。(应用程序崩溃是指应用程序自动重新启动(从启动屏幕)并且捕获的图像也丢失了)
这个上面的应用程序崩溃问题只出现在 android 10 或更高版本的 android 版本中,也出现在 android 10 或更高版本(android 11)中,这个包也不要求在 android 10 或 11 中获得相机的许可,我猜这可能是这背后的实际问题问题
当我使用 android 8 或 android 版本低于 android 10 的设备时,image_picker: ^0.7.2+1在这里与上面给定的代码完全一致(代码中没有任何更改,只是将设备从 android 11 更改为 android 8)该应用程序按预期请求许可,然后相机打开并成功捕获图片,因此一切正常,同样的事情在 android 10 或 android 11 中失败
注意:我也尝试将permission_handler插件与image_picker一起使用,但它也对我不起作用
谁能帮我解决这个问题
另外,如果有人知道 image_picker 的任何替代代码或软件包,请告诉我.. 我只想从相机中拍下照片
解决方案
我也经历了所有这些,设置权限处理,进行缓存修复,以及我在网上找到的其他一些内容,一周后无法解决。拍摄后,Image_picker 仍然使我的应用程序崩溃。我最终的解决方案是使用camera_camera 2.0.1。这是一个糟糕的库名称,它不包括压缩,但相机界面更好,而且开箱即用。
import 'package:camera_camera/camera_camera.dart';
onPressed: (){
Navigator.push( context, MaterialPageRoute(
builder: (_) => CameraCamera(
onFile: (file) {
// Do what you like with File file
// I convert to base64 ready to upload
Navigator.pop(context);
},
)))
},
推荐阅读
- reactjs - 如何在实时模板中使用正则表达式功能?
- javascript - 无法在移动设备上自动播放 YouTube
- jquery - 如果选中复选框,如何禁用每行的输入字段?
- android - React Native android 应用程序在一部手机上运行,但在另一部手机上崩溃(通过谷歌 Play 商店生产)
- javascript - 如何使用填充滚动到元素顶部?
- typescript - DefinitiveTyped 上的 NodeJS 定义可能发生重大变化
- c - C 表达式必须是可修改的值
- reactjs - 在一个类中反应js异步函数
- azure - 发布为 Azure Webjob 在发布时始终强制使用任何 CPU - 即使设置为 x64
- python - 使用python从文本文件中删除行