同行之间的 Flutter-Firebase 文件 View/Download

Flutter-Firebase File View/Download between peers

我正在使用 Flutter & Firebase 开发一个聊天应用。我想包括的一个功能是能够发送文件,经过一番研究后我终于弄明白了。但有一些我真正想要的东西。例如,我将图像发送给另一个用户,在用户设备中,他应该手动下载它才能看到图像,然后在我自己的设备上,在我发送完该图像后,我应该能够直接查看图片,无需自己重新下载图片。 如果我能得到这方面的帮助,我将不胜感激。

我将简要介绍一下我对此实现的看法。

所以,

  • 聊天消息的数据模型

希望您的聊天消息有合适的数据模型。 我的建议是,您有一个类似于此的数据模型

class ChatMessage{
  String uid; 
  String message;
  String imageUrl;  //List<String> imageUrl depending on your use case 
...
}
  • 构建后端

确保您的 Firebase 集合结构良好,建议使用单一连接,称为聊天,并使用 id 和包含该聊天所有消息的子集合进行记录,这样您只需收听该特定集合. 但是你也可以参考youtube上的其他实现。

  • 让用户下载

这里你需要的是 package:flutter_blurhash 有了这个你可以修改你的聊天消息以包含哈希 属性。

class ChatMessage{
  String id; 
  String message;
  String imageUrl;  //List<String> imageUrl depending on your use case
  String hash; 
...
}

使用它,现在您可以在数据库中存储图像的哈希值并将其发送到对等端显示。这将仅显示图像的模糊版本,使用 Stack 并添加带有下载图标的 IconButton()。现在,当点击它时,您可以实现获取下载 imageUrl,然后显示它而不是哈希。

您现在可以将此图像存储在 localStorage 中,然后像 WhatsApp 一样从该位置获取。您也可以在发件人方面执行相同的操作。这样,您将一直节省大量从 firebase 获取图像的带宽。

  • 底线

使用BlurHash()显示模糊图像,点击下载并缓存。 从缓存位置显示两侧的图像。