我正在尝试从Firestore数据库中的给定文档返回评论和文章字段。我利用将来的构建器通过ListTile返回此数据。
当我运行它时,在成功成功显示平铺之前,屏幕短暂变为红色,并呈现以下错误。错误是: 生成函数返回null。令人讨厌的小部件是:FutureBuilder生成函数绝不能返回null。要返回使建筑物小部件填充可用空间的空白空间,请返回“ new Container()”。要返回占用尽可能少空间的空白空间,请返回“新容器(宽度:0.0,高度:0.0)”。
这是我的代码:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class PostGetter extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
body: new Container(
child: new FutureBuilder(
future: Firestore.instance
.collection('post')
.where('article', isEqualTo: 'lpquVtoRNsu0vBLjNByS')
.getDocuments(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
if (snapshot.data != null) {
return new Column(
children: <Widget>[
new Expanded(
child: new ListView(
children: snapshot.data.documents
.map<Widget>((DocumentSnapshot document) {
return new ListTile(
title: new Text(document['comment']),
subtitle: new Text(document['author']),
);
}).toList(),
),
),
],
);
} else {
return new CircularProgressIndicator();
}
}
}),),
);
}
}
为什么循环进度指示器不能满足返回小部件的需要?
感谢您的帮助。
答案 0 :(得分:5)
尝试一下:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class PostGetter extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
body: new Container(
child: new FutureBuilder(
future: Firestore.instance
.collection('post')
.where('article', isEqualTo: 'lpquVtoRNsu0vBLjNByS')
.getDocuments(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
if (snapshot.data != null) {
return new Column(
children: <Widget>[
new Expanded(
child: new ListView(
children: snapshot.data.documents
.map<Widget>((DocumentSnapshot document) {
return new ListTile(
title: new Text(document['comment']),
subtitle: new Text(document['author']),
);
}).toList(),
),
),
],
);
}
}else {
return new CircularProgressIndicator();
}
}),),
);
}
}
否则应位于快照上。具有数据,而不应位于快照上。= null