我必须从Firebase下载图像才能显示它吗?

我必须从Firebase下载图像才能显示它吗?,firebase,flutter,firebase-storage,Firebase,Flutter,Firebase Storage,我使用的是flifter和Firebase。我已使用以下方案将用户配置文件照片上载到Firebase存储: Image.network( 'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg', ) users/userid.png 到目前为止,每当我需要显示用户配置文件图像时,我必须首先将其下载到本地;像 final String file

我使用的是flifter和Firebase。我已使用以下方案将用户配置文件照片上载到Firebase存储:

Image.network(
  'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg',
)
users/userid.png

到目前为止,每当我需要显示用户配置文件图像时,我必须首先将其下载到本地;像

final String fileName = uid + ".png";

Directory appDocDir = await getTemporaryDirectory();

String appDocPath = appDocDir.path;
final File file = File('$appDocPath/$fileName');
// clears the file
file.writeAsStringSync("");
final StorageReference ref = FirebaseStorage.instance.ref().child('users/' + fileName);

final StorageFileDownloadTask downloadTask = ref.writeToFile(file);

final int byteNumber = (await downloadTask.future).totalByteCount;

print("byteNumber : ${byteNumber}");
    } catch(e) {
      return null;
    }
但是,我想知道是否可以跳过这一步,只使用NetworkImage()函数,如:

final StorageReference ref = FirebaseStorage.instance.ref().child('users/' + user.uid + ".png");
String downloadURL = await ref.getDownloadURL();

downloadURL = Uri.decodeFull(downloadURL.toString());
print("FB Storage URL: $downloadURL");


return new NetworkImage(downloadURL);
它不工作并抛出异常


我想做的事;有可能吗?

您要显示的图像数据必须始终读取到您要在其中显示的应用程序中。但你不必像现在这样自己下载

Firebase存储中的任何文件都有一个所谓的下载URL。拥有此URL的任何人都可以读取该文件,而无需使用Firebase Storage SDK。互联网上的大多数图像都是这样的,所以有很多库可以处理这样的图像URL

例如,显示
图像
小部件可以显示URL中的图像,如下所示:

Image.network(
  'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg',
)
如果使用来自Github的图像,还可以使用来自Firebase存储的下载URL

大多数应用在上传文件时都会将文件的下载URL存储在数据库中。如果您没有下载URL,但只有路径,则可以通过以下方式获取下载URL:

final StorageReference ref = FirebaseStorage.instance.ref().child('users/' + fileName);
final Uri downloadUrl = await ref.getDownloadUrl();

我不是颤振专家,因此该代码片段中可能存在一些问题。

好的,我发现我遇到了错误。 我正在将URI转换为字符串,并在NetworkImage中使用它。
当我从URI中删除.ToString()时,它会工作。

请添加异常。