ошибка, возникающая при получении данных из базы данных - PullRequest
0 голосов
/ 12 апреля 2020

при извлечении данных из Firebase это немедленно отображается на экране, и в течение нескольких миллисекунд ошибка, показанная на изображении, исчезает, а полученные данные отображаются.

после показа ошибки, которую вы можете увидеть на картинке. эта ошибка сохраняется только в течение нескольких миллисекунд, и данные мгновенно отображаются.

Widget listitems(){
return new StreamBuilder(
  stream: Firestore.instance.collection('inventory').snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
     return new ListView(
      children: snapshot.data.documents.map((DocumentSnapshot document) {
        return Card(
          margin: new EdgeInsets.fromLTRB(10.0,5.0,10.0,5.0),
          elevation: 10.0,
          child: new Container(
            padding: new EdgeInsets.fromLTRB(25.0,25.0,25.0,25.0),
            child: new Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                new Text('Name of the Item:         '+document['name'],
                  style: TextStyle(fontSize: 15.0,fontWeight:FontWeight.w600),),
                new SizedBox(height: 1.0,),
                new Text('Category of the Item:    ' +document['category'],
                  style: TextStyle(fontSize: 15.0,fontWeight:FontWeight.w300),),
                new SizedBox(height: 1.0,),
                new Text('Quantity of the Item:     '+document['quantity']+ 'items',
                  style: TextStyle(fontSize: 15.0,fontWeight:FontWeight.w300),),
              ],
            ),
          ),
        );
      }).toList(),
    );
  }

 );
}

1 Ответ

1 голос
/ 12 апреля 2020

Ошибка имеет смысл. Это потому, что для извлечения данных из Firestore требуется несколько миллисекунд (или для любого другого вызова API в этом отношении).

Что вы можете сделать, это проверить, получили ли вы данные, и вернуть виджеты только когда у тебя это есть. Например:

  return StreamBuilder<QuerySnapshot>(
    stream: Firestore.instance.collection(documentName).snapshots(),
    builder: (BuildContext context, 
              AsyncSnapshot<QuerySnapshot> snapshot) {
    switch (snapshot.connectionState) {
       case ConnectionState.waiting:
           return Center(child: new CircularProgressIndicator());
       default:
           return ListView(.............);
      }
    },
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...