如何解决Flutter:“与设备的连接丢失”第二次使用image_picker从iOS的图库中选择照片
我正在开发一种移动应用程序,需要用户从图库中选择图像。
我正在使用image_picker:^ 0.6.7 + 11,这是我的代码:
if (await Permission.photos.request().isGranted) {
try {
final image =
await ImagePicker().getImage(source: ImageSource.gallery);
if (image != null) {
photo.clearData();
File _image = File(image.path);
photo.addOriginal(_image);
} else {
print('no image selected');
}
} on PlatformException catch (e) {
print('Platform exception $e');
} catch (e) {
print('Unknown error: $e');
}
}
在android模拟器中,一切正常。在iOS模拟器中,我可以选择一个图像,但是如果我尝试选择第二个图像,则该应用程序将崩溃并“失去与设备的连接”。在运行标签中打印-但没有错误。
问题:如何解决此问题,以便可以返回图库并在iOS上根据需要多次选择其他图像?
在调试时,我遇到了这个问题:
PlatformException(multiple_request,Cancelled by a second request,null,null)
我遇到了很多类似的问题,在这里可以找到,例如GitHub等...
- 颤动升级
- 升级后的发布文件
- 干净整洁
- 清理并在Xcode中构建
- 在浮动代码中添加了“ imageCache.clear()”
- 使缓存无效并在android studio中重新启动
- flutter doctor -v:未发现问题
- 检查了权限(info.plist并添加了Permission_handler程序包)
- 重新启动模拟器
- 删除了模拟器中的所有内容和设置
- 使用断点进行调试很奇怪地阻止了该问题的发生,然后经过几次选择,应用再次崩溃¯\ (ツ) /¯
我敢肯定,这是直截了当的,但是我觉得我已经用光了所有的选择,而且不确定从这里去哪里。
解决方法
你的代码是正确的,这是一个模拟器问题,如果你想在 IOS 上测试它,你必须在真正的 iPhone 上进行测试,这里是一个关于你如何正确做的片段:
final imagePicker = ImagePicker();
PickedFile pickedFile;
if (fileType == FileType.Camera) {
// Camera Part
pickedFile = await imagePicker.getImage(
source: ImageSource.camera,maxWidth: 480,maxHeight: 640,imageQuality: 25,// pick your desired quality
);
setState(() {
if (pickedFile != null) {
_storedFile = File(pickedFile.path);
} else {
print('No image selected.');
return;
}
});
} else if (fileType == FileType.Gallery) {
// Gallery Part
pickedFile = await imagePicker.getImage(
source: ImageSource.gallery,);
} else {
print('No image selected.');
return;
}
});
}
并且当用户选择他想要获取图像的方式时不要忘记枚举:
enum FileType {
Gallery,Camera,Video,}
编辑: 每当您添加依赖于本机代码的包时,您应该重新启动整个应用程序构建 b 停止构建并再次重新启动它以便本机代码编译良好,在将此包放入 pubspec.yaml 之前不要忘记重新启动>
希望能帮到你,如果这个回答对你有帮助,别忘了标记为已回答,请点赞。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。