我做了一个应用程序,我必须显示个人资料图像,你可以点击加载更多。我必须更快地加载我的Firebase存储图像,但我不知道如何做到这一点我的代码:
await FirebaseStorage.instance .ref('profileImages/${data[i]["uid"]}_profile_picture.jpg') .getData();
我已经尝试压缩图像和更多的东西,但我不知道他们了。如何更快地加载图像?
mzmfm0qo1#
问题:
问题是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
如果您为配置文件图像这样做,则在添加图像并更改图像时将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)), );
希望能帮上忙!
1条答案
按热度按时间mzmfm0qo1#
问题:
问题是Firebase存储速度太慢。
但我找到了一个简单的解决办法。
解决方案:
你要把你的形象做成网络形象
要执行此操作,请完成以下步骤:
1.获取图片URL
要做到这一点,使用以下代码:
2.保存URL
如果您为配置文件图像这样做,则在添加图像并更改图像时将URL添加到cloud firestore,并使用以下代码:
如果你这样做的东西,像你的应用程序图标,然后使用这段代码:
3.从图片中获取URL
如果你使用第一种方法保存URL(如果你是为个人资料图片这样的东西做的),那么使用下面的代码:
如果你用另一种方式保存URL(如果你是为了你的应用图标这样的东西),使用下面的代码:
4.显示图片
要显示图像,请使用以下代码:
希望能帮上忙!