我正在开发一个移动的应用程序,需要用户从图库中选择一个图像。
使用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等。我有:
- 增强Flutter
- 升级的pub文件
- Flutter 清洗
- 在Xcode中清理和构建
- 在flutter代码中添加了'imageCache.clear()'
- 在android studio中使缓存无效并重新启动
- Flutter医生-v:未发现问题
- 检查了权限(info.plist和添加的permission_handler包)
- 重新启动模拟器
- 清除模拟器中的所有内容和设置
- 使用断点进行调试会奇怪地阻止问题发生几次,然后在几次选择后,应用程序再次崩溃¯*()*/¯
我确信这是一件直截了当的事情,但我觉得我已经用尽了我所有的选择,不知道从这里去哪里。
1条答案
按热度按时间txu3uszq1#
你的代码是正确的,这是一个模拟器的问题,如果你想在IOS上测试它,你必须在一个真实的的iPhone上测试,这里是一个片段,你可以如何正确地做到这一点:
当用户选择他想要获取图像的方式时,不要忘记枚举:
编辑:每当你添加一个依赖于本机代码的包时,你应该重新启动整个应用程序构建b停止你的构建并重新启动它,这样本机代码就能很好地编译,在把这个包放到你的pubspec.yaml之前不要忘记重新启动。