dart - Flutter 从 Firebase 存储加载图像

我看到,有很多示例有关如何使用Flutter上传到Firebase存储,但实际上没有下载/读取/显示已经上传的图像。

在Android中,我只是使用 Glide 显示图像,我该如何在 flutter 朔迷离中进行?我是否使用 networkImage 类,如果是,我如何首先获取存储在存储中的图像的URL?

最佳答案

要查看存储中的图像,您需要的是存储中文件的名称。获得所需特定图像的文件名后。 就我而言,如果我想加载测试图像,

final ref = FirebaseStorage.instance.ref().child('testimage');
// no need of the file extension, the name will do fine.
var url = await ref.getDownloadURL();
print(url);

获得网址后,

Image.network(url);

就是这样:)

基于其中一条评论的新替代答案。

I don't see anywhere google is charging extra money for downloadURL. So if you're posting some comments please attach a link to it.

将文件上传到存储后,使该文件名唯一,并将该名称保存在 Firestore 或实时数据库中的某个位置。

getAvatarUrlForProfile(String imageFileName) async {
final FirebaseStorage firebaseStorage = FirebaseStorage(
    app: Firestore.instance.app,
    storageBucket: 'gs://your-firebase-app-url.com');

Uint8List imageBytes;
await firebaseStorage
    .ref()
    .child(imageFileName)
    .getData(100000000)
    .then((value) => {imageBytes = value})
    .catchError((error) => {});
return imageBytes;
}

Uint8List avatarBytes =
    await FirebaseServices().getAvatarUrlForProfile(userId);

并像使用它一样,

MemoryImage(avatarBytes)

https://stackoverflow.com/questions/50877398/

相关文章:

dart - 如何格式化内插字符串

android - 如何在 Flutter 中禁用 FlatButton 的飞溅突出显示?

android - 在 Android Studio 中开发的 Flutter 项目的合法 .git

dart - 使用 BLoC 处理导航的正确方法

google-cloud-firestore - 如何使用 Flutter 配置 Firebase

swift - 如何在 Flutter 中启用对现有项目的 Swift 支持

flutter - Flutter 中的 MyApp 类错误未定义方法 'setState'

flutter - 我可以在 Flutter 应用中使用 Android 8.0 自适应图标吗?

android - 在 Flutter 项目的 android studio 上初始化 Gradle

dart - 测试使用插件和平台 channel 的 Flutter 代码