我正在实现一个聊天应用程序,用户可以在其中共享图像。每个图像都是有状态的小部件,每个图像也应上传到Firebase存储。
我的问题是,此流程在应用程序开头运行良好,但是当您上传另一个图像而不是单个文件时,现在将上传2个文件(1个新文件和上一条消息中的文件)。
我非常确定这与键有关,因此我也提供了UniqueKey实例,但是问题仍然存在。
让我解释一下我的实现,然后提供代码:
我有2个文件;一个是聊天屏幕,另一个是单个消息芯片。 聊天屏幕保留消息芯片的列表,并相应地进行渲染。
消息芯片是有状态的,因为我希望用户在将其上传到服务器时看到进度。从设备中拾取文件后,消息芯片实例将被推送到聊天屏幕中的阵列。
我在聊天屏幕中附加图片按钮的代码:
https://us12.api.mailchimp.com/3.0/...
这是我的消息筹码文件中的代码(仅包括必需品)
IconButton(
icon: Icon(Icons.attach_file),
onPressed: () async {
final File _file = await ImagePicker.pickImage(
source: ImageSource.gallery);
if (_file != null) {
//appending to the messages list
final sss = new MediaMessage(
key: UniqueKey(),
file: _file,
isImage: true,
threadId: widget._threadId,
);
setState(() {
_messages.add(sss);
});
}
},
)
以下是此问题的演示GIF: GIF image demo
任何建议/解决方案将不胜感激。 谢谢
答案 0 :(得分:0)
将图片上传任务后的文件值设置为空即可。
喜欢
widget.file=null
将其放置在uploadTask之后