提问人:LiiOr 提问时间:10/28/2023 最后编辑:LiiOr 更新时间:10/28/2023 访问量:31
File_picker / Image_picker 在移动设备上的 Flutter Web 上崩溃
File_picker / Image_picker crashes on Flutter web from mobile
问:
我有一个 flutter Web 应用程序,我正在尝试在其中集成拍照功能。我尝试了 file_picker 软件包,但由于某种原因,应用程序有时会崩溃。这似乎是与设备相关的内存问题。我在 Iphone SE 和三星 S21 上进行了测试。这是允许我收集图像的代码:
pickImage(Question question, context) async {
try {
FilePickerResult? result = await FilePicker.platform
.pickFiles(type: FileType.image, allowMultiple: true, allowCompression: true);
if (result != null && result.files.isNotEmpty) {
for (int i = 0; i < result.files.length; i++) {
PlatformFile file = result.files[i];
Uint8List? imageBytes = file.bytes!;
Uint8List? compressedImage = await compressImage(imageBytes);
question.addImage(
'IMG_${DateTime.now().millisecondsSinceEpoch.toString()}');
question.addImageData(compressedImage);
imageBytes = null; compressedImage = null;
}
result = null;
}
} catch(e) {
print('ImagePicker failed : $e');
}
}
Future<Uint8List> compressImage(Uint8List imageBytes) async {
final List<int> compressedBytes = await FlutterImageCompress.compressWithList(
imageBytes,
quality: 10,
);
return Uint8List.fromList(compressedBytes);
}
在前面的代码中,我尝试通过将变量设置为 null 来释放内存,但问题仍然存在,我不明白为什么。我应该使用另一个包吗?
编辑我刚刚尝试了另一个软件包,image_picker,当我从手机上使用 PWA 时,一切都是一样的。选择几张图像后,没有错误消息,但应用程序崩溃并重新加载......
final ImagePicker picker = ImagePicker();
Future<void> _pickImage() async {
try {
final XFile? pickedFile =
await picker.pickImage(source: ImageSource.camera);
if (pickedFile != null) {
final imageBytes = await pickedFile.readAsBytes();
final base64Image = base64Encode(imageBytes);
setState(() {
imgList.add(base64Image);
});
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(e.toString()),
),
);
}
}
我做错了什么?提前感谢您的帮助。
答: 暂无答案
评论
file.bytes