如何更快地从 Firebase 存储加载图像?

问题描述 投票:0回答:2

我制作了一个应用程序,我必须在其中显示个人资料图像,并且您可以在其中单击加载更多。

我必须更快地加载我的 Firebase 存储图像,但我不知道该怎么做

我的代码:

await FirebaseStorage.instance
              .ref('profileImages/${data[i]["uid"]}_profile_picture.jpg')
              .getData();

我已经尝试过压缩图像和更多东西,但我不再了解它们了。

如何更快地加载图像?

flutter dart firebase-storage
2个回答
2
投票

问题:

问题在于 Firebase 存储速度太慢。

但我找到了一个简单的解决方案。


解决方案:

你得把你的图片做成网络图片

为此,请完成以下步骤:

1。获取图片的URL

为此,请使用以下代码:

 var ref = FirebaseStorage.instance.ref().child("profileImages/${uid}_profile_picture.png");
// this is the URL of the image
      String url = (await ref.getDownloadURL()).toString();

2。保存网址

如果您对个人资料图像之类的内容执行此操作,则在添加图像并更改图像并使用以下代码时将 URL 添加到 cloud firestore:

await FirebaseFirestore.instance
        .collection('users')
        .where("uid", isEqualTo: FirebaseAuth.instance.currentUser?.uid)
        .get()
        .then((value) async {
      await FirebaseFirestore.instance.collection('users').doc(value.docs[0].id).update({"profileImageURL": url});
    });

如果您对应用程序图标之类的内容执行此操作,请使用以下代码:

(await SharedPreferences.getInstance()).setString("logoURL", url);

3.从图像中获取 URL

如果您使用第一种方法来保存 URL(如果您为个人资料图片等内容执行此操作),则使用以下代码:

await FirebaseFirestore.instance
        .collection('users')
        .where("uid", isEqualTo: uid)
        .get()
        .then((value) {
       url = value.docs[0].data()["profileImageURL"];
    });

如果您采用其他方式保存 URL(如果您为应用程序图标之类的内容执行此操作),请使用以下代码:

(await SharedPreferences.getInstance()).getString("logoURL");

4。显示图像

要显示图像,请使用以下代码:

Container(
  height: 100,
  width: 100,
  child: Image(image: NetworkImage(url)), 
);

希望有帮助!


0
投票

非常感谢您,感谢谷歌团队:加载速度确实要花很多时间,现在加载速度肯定更快,希望您能做到最好,您必须知道进入天堂的最低标准是相信只有一位全能的上帝有证据,请你的创造者指引你,在你祈祷的简单任务中引导你进入天堂

© www.soinside.com 2019 - 2024. All rights reserved.