首页 > 解决方案 > 未来的 for 循环在 Flutter 中不起作用并打印错误

问题描述

我有一个future与未来的构建器连接的功能,可以从中获取图像Firebase storage。因为我会得到多个图像,所以我创建了一个 for 循环,如下所示:

  FutureBuilder(
         future: getImages(),
         builder: (context, AsyncSnapshot<dynamic> snapshot) {
           if (snapshot.connectionState == ConnectionState.done) {
             return ListView.builder(
               shrinkWrap: true,
               itemCount: 2,//snapshot.data.length,
               itemBuilder: (BuildContext context, int index) {
                 return ListTile(
                   contentPadding: EdgeInsets.all(8.0),
                   leading: Image.network("https://placehold.it/500x500", fit: BoxFit.fill),
                 );
               });
           } else if (snapshot.connectionState == ConnectionState.none) {
              return Text("No data");
            }
           return CircularProgressIndicator();
          },
        ),

  getImages() async{
    var showcaseCode = await page.where("userID",isEqualTo: FirebaseAuth.instance.currentUser.uid).get();
    List downloadUrlList = [];
    for(var i = 0; i < showcaseCode.docs.length; i++){
      var url = await FirebaseStorage.instance.ref()
          .child("showcase_images")
          .child(showcaseCode.docs[0]["showcase_code"])
          .getDownloadURL()
          .toString();
      downloadUrlList.add(url),
    }
    return downloadUrlList;
  }

但它没有用,所以我尝试了以下操作:

  getImages() async{
    for(var i = 0; i < 10; i++){
     print("Test");
    }
    return true;
  }

我在控制台中收到以下错误和打印:

I/flutter ( 6870): Test 

I/chatty  ( 6870): uid=10153(com.nanowiresoft.memeon_main) 1.ui identical 8 lines

I/flutter ( 6870): Test 

W/DynamiteModule( 6870): Local module descriptor class for providerinstaller not found. 

I/DynamiteModule(6870): Considering local module providerinstaller:0 and remote module providerinstaller:0 

W/ProviderInstaller( 6870): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0. 

I/FirebaseAuth( 6870): [FirebaseAuth:] Preparing to create service connection to fallback implementation

W/System  ( 6870): Ignoring header X-Firebase-Locale because its value was null. 

D/FirebaseAuth( 6870): Notifying id token listeners about user ( gLOnpLqdStXqGbz0iHQpbBlVbN62 ).

我在其他线程中看到过这个错误,但我无法修复它。我是 Flutter 的新手,所以我现在不太了解。感谢帮助!

标签: firebasefluttererror-handling

解决方案


添加Future为返回类型。必须工作

 Future<List<String>> getImages() async{
    var showcaseCode = await page.where("userID",isEqualTo: 
    FirebaseAuth.instance.currentUser.uid).get();
    List downloadUrlList = [];
    
    for(var i = 0; i < showcaseCode.docs.length; i++){
        var url = await FirebaseStorage.instance.ref()
        .child("showcase_images")
        .child(showcaseCode.docs[0]["showcase_code"])
        .getDownloadURL()
        .toString();

        downloadUrlList.add(url),
    } 

    return downloadUrlList;
}    

推荐阅读