Flutter Stream Builder возвращает только один LisTile из Firestore - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть построитель потока, который должен возвращать несколько LisTile, но он возвращает только один, я использовал ту же структуру с другими коллекциями, и она отлично работает, но для этой коллекции это не так.

Widget build(BuildContext context) {

    return StreamBuilder(
                    stream: DatabaseService().itemsCollection.snapshots(),
                    builder: ( context,  snapshot){
                      if (!snapshot.hasData){  
                       return Loading();
                                          }
                              else{  
                        List<Item> myItems= [];


                        for (int i=0; i<snapshot.data.documents.length; i++){
                          DocumentSnapshot snap = snapshot.data.documents[i];

                          myItems.add(
                            Item(
                            restaurantId: snap.data['restaurantId'],
                            id:snap.documentID ?? '',
                            name:snap.data['name']?? '',
                            price:double.tryParse(snap.data['price'].toString())?? 0,
                            calories:double.tryParse(snap.data['calories'].toString())?? 0,
                            section: MenuSection('','',''),
                            imageUrl:snap.data['imageUrl']?? '',
                            describtion: snap.data['describtion']?? '')
                          );


                               return 
                                   ListView.builder(
                              itemCount: myItems.length,
                              itemBuilder: (_, i) => Column(
                                    children: [ 
                                      ItemListItem(
                                        id: myItems[i].id,
                                         name: myItems[i].name,
                                         describtion: myItems[i].describtion,
                                         price: double.tryParse(myItems[i].price.toString()),
                                         imageUrl: myItems[i].imageUrl,
                                        // branchId: branchId,
                                         restId: myItems[i].restaurantId ,

                                        ),

                                     // Divider(),
                                    ], ),
                                  );

                        } 
                   }
                   }
            );

Данные в FireStore

Если кто-нибудь может найти, где проблема, пожалуйста.

================ ОБНОВЛЕНИЕ =================

Проблема решена.

Кому может возникнуть эта проблема позже,

Я нашел проблема в том, что я поместил оператор return внутри для l oop, в то время как это должно произойти после окончания l oop!

1 Ответ

0 голосов
/ 16 апреля 2020

вы можете показать структуру данных в базе данных?

...