首页 > 解决方案 > 是否可以将流生成器生成的对象列表发送到本地方法?

问题描述

所以我试图将一个由流构建器生成的对象列表发送到这个名为“submitOrder”的方法,但这似乎是一种错误的方法,如果有人能帮助我,我将不胜感激。

StreamBuilder(
                    stream: DatabaseService().cartCollection.snapshots(),
                    builder: ( context,  snapshot){
                      if (!snapshot.hasData){  
                       return Loading();
                                          }
                              else{  

                        List<CartItem> products =[];
                        double total =0;
                        CartItem temp= CartItem(customerId:'' ,itemId:'' ,id: '', title: '', quantity:0, price: 0);

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

                          DocumentSnapshot snap = snapshot.data.documents[i];

                         if ((snap.data['customerId']== user.uid && snap.data['status']== 'open') ){

                           temp = CartItem(
                                                customerId: user.uid, 
                                                itemId: snap.data['itemId'].toString(),
                                                id: snap.documentID.toString(), 
                                                title: snap.data['itemName'].toString(), 
                                                quantity: int.tryParse(snap.data['quantity'].toString()) , 
                                                price: double.tryParse( snap.data['price'].toString())
                                                );

                                                total += temp.quantity*temp.price;
                                                products.add(temp);

                                }    



                        } 

                        submitOrder(products,total); 
                        return Text('Order Sucsessfuly!');
                      }
                   }
            );


标签: firebaseflutterdartstream-builder

解决方案


试试这个,让我知道它是否适合你

StreamBuilder<QuerySnapshot>(
                    stream: DatabaseService().cartCollection.snapshots(),
                    builder: (BuildContext context,AsyncSnapshot<QuerySnapshot>  snapshot){
                      if (snapshot.hasData){  
                        List<CartItem> products =[];
                        double total =0;
                        CartItem  temp;


                       snapshot.data.documents.map((DocumentChange change){
                       if ((change.document.data['customerId']== user.uid && change.document.data['status']== 'open') ){

                          temp = CartItem(
                                                customerId: user.uid, 
                                                itemId: snap.data['itemId'].toString(),
                                                id: snap.documentID.toString(), 
                                                title: snap.data['itemName'].toString(), 
                                                quantity: int.tryParse(snap.data['quantity'].toString()) , 
                                                price: double.tryParse( snap.data['price'].toString())
                                                );

                                                total += temp.quantity*temp.price;
                                                products.add(temp);
                       }
                                     });


                        submitOrder(products,total); 
                        return Text('Order Sucsessfuly!');

                     } else{  
                        return Loading();

                      }
                   }
            );

推荐阅读