Firebase 快照数据为空,并保持加载状态
快照为空,并不断提供无休止的循环进度指示器,而不是加载帖子。我试图让它将文章加载到页面上,并将其添加到数据库中,但在屏幕上看到文章只会给出一个无止境的加载状态。代码如下:Firebase 快照数据为空,并保持加载状态,firebase,flutter,dart,google-cloud-firestore,snapshot,Firebase,Flutter,Dart,Google Cloud Firestore,Snapshot,快照为空,并不断提供无休止的循环进度指示器,而不是加载帖子。我试图让它将文章加载到页面上,并将其添加到数据库中,但在屏幕上看到文章只会给出一个无止境的加载状态。代码如下: Widget feed = FutureBuilder( future: _getFeedFuture, builder: (BuildContext ctx, AsyncSnapshot snapshot) { if (snapshot.connectionState == C
Widget feed = FutureBuilder(
future: _getFeedFuture,
builder: (BuildContext ctx, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.waiting ||
snapshot.data == null) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
CircularProgressIndicator(),
SizedBox(
height: 16.0,
),
Text('Loading ....'),
],
);
} else if (snapshot.data.length == 0) {
return Text('No data to display');
} else {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: _posts,
);
}
},
);
_items.add(feed);
return _items;
}
Widget feed=FutureBuilder(
未来:_getFeedFuture,
生成器:(BuildContext ctx,异步快照){
如果(snapshot.connectionState==connectionState.waiting||
snapshot.data==null){
返回列(
mainAxisAlignment:mainAxisAlignment.center,
mainAxisSize:mainAxisSize.max,
儿童:[
CircularProgressIndicator(),
大小盒子(
身高:16.0,
),
文本(“加载…”),
],
);
}else if(snapshot.data.length==0){
返回文本(“无数据显示”);
}否则{
返回列(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisAlignment:mainAxisAlignment.start,
儿童:_posts,
);
}
},
);
_添加(提要);
退货(物品);;
}
getFuturefeed等于下面的get Feed
Future _getFeed() async {
_posts = [];
Query _query = _firestore
.collection('posts')
.orderBy('created', descending: true)
.limit(10);
QuerySnapshot _quertSnapshot = await _query.getDocuments();
_postDocuments = _quertSnapshot.documents;
_lastDocument = _postDocuments[_postDocuments.length - 1];
for (var i = 0; i < _postDocuments.length; ++i) {
Widget w = _makeCard(_postDocuments[i]);
_posts.add(w);
}
return _postDocuments;
}
Future\u getFeed()异步{
_员额=[];
查询(Query=)
.collection(“posts”)
.orderBy('created',降序:true)
.限额(10);
QuerySnapshot\u QuerySnapshot=wait\u query.getDocuments();
_postDocuments=\u querysnapshot.documents;
_lastDocument=_postDocuments[_postDocuments.length-1];
对于(变量i=0;i<\u postDocuments.length;++i){
Widget w=_makeCard(_postDocuments[i]);
_增加(w);
}
归还邮寄文件;
}
因此我建议在if(snapshot.connectionState==connectionState.waiting | | snapshot.data==null)上方放置两个print语句{查看连接状态和SnAsHOTH.DATA。此外,GETFIX方法似乎假定它总是得到它所期望的。也需要考虑可能出现的错误。@ GRAAMHD SNAPHOTH.DATA打印为NULL。因此,当快照为NULL时,您将总是看到SpnEnter。它不会返回任何东西。您需要优雅地处理它,不要显示无休止的旋转。这在我的设备中发生,但在emulator中工作正常。