如何从 Firebase 存储中提取照片用于 flutter 项目

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

我没有应在应用程序背景中的照片,但它没有为我显示任何内容,并且在错误中它写了一些有关链接的内容

我查了资料,发现了一个我回收的代码,在下面,在通用类中:

late String imageUrl;
  
final storage = FirebaseStorage.instance;

  @override
  void initState() {
    super.initState();
    imageUrl = "";
    getImageUrl();
  }

  Future<void> getImageUrl() async {
    final ref = storage.ref().child("");
    final url = await ref.getDownloadURL();
    setState(() {
      imageUrl = url;
    });
  }

这是将照片覆盖在背景上的代码的一部分:

body: Stack(
        children: [
          Image(
            image: NetworkImage(imageUrl),
            fit: BoxFit.cover,
            width: double.infinity,
            height: double.infinity,
          ),
)
flutter dart mobile firebase-storage
1个回答
0
投票

请按照以下步骤操作:

  1. 检查 Firebase 存储规则:确保您的 Firebase 存储规则允许公共访问图像。如果规则设置为拒绝公共访问,则在没有正确身份验证的情况下,您将无法获取图像 URL。出于测试目的,您可以设置规则以允许公共读取访问:
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read;
      allow write: if request.auth != null;
    }
  }
}
  1. 检查 Firebase 存储路径:在您的
    getImageUrl
    方法中,
    ref().child("")
    中有一个空字符串。这意味着您没有指定 Firebase 存储中图像的路径。确保提供正确的图像路径。
final ref = storage.ref().child("path/to/your/image.jpg");

"path/to/your/image.jpg"
替换为 Firebase Storage 中图像的实际路径。

  1. 错误处理:将代码包装在 try-catch 块中,以捕获获取图像 URL 期间的任何潜在错误。
try {
  final ref = storage.ref().child("path/to/your/image.jpg");
  final url = await ref.getDownloadURL();
  setState(() {
    imageUrl = url;
  });
} catch (e) {
  print("Error fetching image URL: $e");
}

通过添加错误处理,您将能够看到过程中发生的任何错误,这有助于诊断问题。

  1. 验证图像 URL:获取 URL 后,打印它以确保您获得有效的 URL。
print("Image URL: $url");

检查控制台中打印的 URL,确保其正确且可访问。

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