flutter - 对同一视图中的两个图像使用 ImagePicker
问题描述
我不明白为什么在同一个视图中包含两个图像选择器小部件会导致我的应用程序崩溃。我可以选择一张图片,但在尝试选择第二张图片时,应用程序崩溃且没有任何错误消息。
所以我在提交表单时基本上需要添加两张图片。一张用于徽标,另一张用于背景图像。
图像选择器插件:
import 'package:image_picker/image_picker.dart';
我将它们定义如下:
File _venueLogo;
File _venueImage;
final _pickers = [ImagePicker(), ImagePicker()];
以及设置两个图像的方法
_setVenueImage(img) {
setState(() {
_venueImage = img;
});
}
_setVenueLogo(img) {
setState(() {
_venueLogo = img;
});
}
然后在正文中,我使用两个 ListTiles,一个用于场地图像,一个用于徽标图像。我这里只发一张。
ListTile(
subtitle: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.0),
border: Border.all(
color: Colors.grey,
),
),
padding: EdgeInsets.all(20.0),
child: ImagePickerWidget(
setImage: _setVenueImage,
picker: _pickers[0],
),
),
title: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("Pick image"),
),
),
这是中的图像选择器方法ImagePickerWidget
Future _getImage() async {
final pickedFile =
await widget.picker.getImage(source: ImageSource.gallery);
if (pickedFile != null) {
widget.setImage(File(pickedFile.path));
} else {
print('No image selected.');
}
}
解决方案
而不是使用image_picker
usemulti_image_picker
来选择多个文件。
在你pubspec.yaml
之后dependencies:
添加这个:
multi_image_picker: ^4.8.0
推荐阅读
- android - 操作类型未在本地主机上运行的二进制文件中注册“TFLite_Detection_PostProcess”
- sql-server-2008 - 条件数据类型转换 | SQL 服务器
- xcode - 由于 Firebase 升级后缺少框架 GoogleToolboxForMac 而导致崩溃
- r - 如何存储循环表数据
- c# - CSVHelper 7.1.1 - 未找到与索引 0 处的 ['sp_ac_input_voltage_unit'] 名称匹配的标头
- c# - 使用相同的 SMTP (C#) 发送电子邮件和传真时出错
- postgresql - 使用 Apache NiFi 加载 postgres 表时出现 UUID 数据类型问题
- python - Python Splinter:如何截取整页截图?
- regex - 正则表达式匹配字符串的子字符串
- javascript - 无法将 JSON 转换为对象