Firebase Streambuilder - PullRequest
       7

Firebase Streambuilder

0 голосов
/ 30 сентября 2019

У меня есть карта в базе данных Firebase, такая как: 'abc@gmail.com': {food order}

Я хочу создать поток этих данных для обновления виджетов при размещении нового заказа. Я пытался использовать приведенный ниже код, но он дает ошибку. DocumentSnapshot не имеет экземпляра getter 'length'

StreamBuilder(
        stream: Firestore.instance.collection('admin').document('current-orders').snapshots(),
        builder: (context, snapshot) {
          return snapshot.hasData?Column(
            children: <Widget>[
              Expanded(
                child: Container(
                  child: Padding(
                    padding: EdgeInsets.all(10),
                    child: ListView.builder(
                      itemCount: snapshot.data.length,
                      itemBuilder: (context, uid) {
                        return Column(
                          children: <Widget>[
                            Row(
                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
                              children: <Widget>[
                                Text(
                                  snapshot.data.keys.toList()[uid],
                                  style: TextStyle(
                                      fontSize: 18, fontWeight: FontWeight.bold),
                                ),
                                RaisedButton(
                                  shape: RoundedRectangleBorder(
                                      borderRadius: BorderRadius.circular(30)),
                                  color: Colors.blue[200],
                                  child: Text(
                                    'Order Ready',
                                    style: TextStyle(color: Colors.black54),
                                  ),
                                  onPressed: () {},
                                ),
                              ],
                            ),
                            ListView.builder(
                              shrinkWrap: true,
                              physics: ClampingScrollPhysics(),
                              itemCount: snapshot.data.values.keys.toList().length,
                              itemBuilder: (context, orderID) {
                                return Text(
                                  '${snapshot.data.values.keys[orderID].toString()} : ${snapshot.data.values.values[orderID].toString()}',
                                  //'${_currentOrders[uid].keys.toList()[orderID]} : ${_currentOrders[uid].values.toList()[orderID]}',
                                  style: TextStyle(fontSize: 16),
                                );
                              },
                            ),
                            Padding(
                              padding: EdgeInsets.only(top: 10),
                              child: Container(
                                color: Colors.grey,
                                height: 1,
                              ),
                            )
                          ],
                        );
                      },
                    ),
                  ),
                ),
              ),
            ],
          ):Center(child: Text('No orders right now', style: TextStyle(fontSize: 30, color: Colors.black54),),);
        }
      );

Спасибо.

...