Есть ли возможность отправить список объектов, созданных построителем потока, локальному методу? - PullRequest
0 голосов
/ 17 апреля 2020

Итак, я пытаюсь отправить список объектов, созданных построителем потока, в этот метод с именем 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!');
                      }
                   }
            );


1 Ответ

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

Попробуйте и дайте мне знать, если это работает для вас

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();

                      }
                   }
            );
...