Flutter:多次限制调用构建方法

时间:2019-05-21 17:32:17

标签: firebase dart flutter firebase-storage

我正在实现一个聊天应用程序,用户可以在其中共享图像。每个图像都是有状态的小部件,每个图像也应上传到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

任何建议/解决方案将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

将图片上传任务后的文件值设置为空即可。

喜欢

widget.file=null

将其放置在uploadTask之后