如何将下载的图片网址一一添加到列表中<String>

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

我有一个

List<String> profileName = ['k1','k2','k3','k4','k5',];
我想一一下载一个 profileName,然后使用
final downloadedImagesUrl = [];
将其添加到
downloadedImagesUrl.add(snapshot.data!);
,例如我们要从 firebase 存储下载 k1,然后将下载的 url 传递到
final downloadedImagesUrl = []; 
然后下载k2并将下载的url传递给
final downloadedImagesUrl = [];
一步一步等等。我怎样才能实现这样的目标。

代码:

final FirebaseStorage storage = FirebaseStorage.instance;
List<String> profileName = ['k1','k2','k3','k4','k5',];
final downloadedImagesUrl = [];

            FutureBuilder(
                future: storage.ref('usersProfile/$profileName').getDownloadURL(),
                builder: (context,snapshot) {
                  if (snapshot.connectionState == ConnectionState.done 
                       &&snapshot.hasData) {

                    //problem
                    downloadedImagesUrl.add(snapshot.data!);

                    return Image.network(snapshot.data!);
                  }
                  return Container();
                }),

这段代码的问题在于 downloadImagesUrl.add(snapshot.data!);就是随机添加下载的图片profileName url到最终的downloadedImagesUrl = [];我不希望这种情况发生如果有人知道请帮忙......

flutter firebase dart google-cloud-storage
1个回答
0
投票

我认为你只需要一个简单的函数来做到这一点,我还没有测试你的代码实现,但我认为你应该这样做

Future<List<String>> getDownloaedImageUrls() async {
    List<String> profileNames = [
      'k1',
      'k2',
      'k3',
      'k4',
      'k5',
    ];
    List<String> downloadedImagesUrl = [];
    for (var profileName in profileNames) {
      String imageUrl =
          await storage.ref('usersProfile/$profileName').getDownloadURL();
      downloadedImagesUrl.add(imageUrl);
    }
    return downloadedImagesUrl;
  }

在您的未来建造者上使用它

 FutureBuilder(
                future: getDownloaedImageUrls(),
                builder: (context,snapshot) {
                  if (snapshot.connectionState == ConnectionState.done 
                       &&snapshot.hasData) {
//since the function will also return the array of image url then we just use the first image url here
                    return Image.network(snapshot.data[0]!);
                  }
                  return Container();
                }),

希望有帮助

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