У меня проблема с данными, которые я возвращаю из Firestore. Мне нужно получить несколько писем с помощью плагина Cloud Firestore :
class _EmailPageState extends State<EmailPage> {
//StreamBuilder<QuerySnapshot> _emails;
@override
void initState() {
super.initState();
//_emails = _getEmails();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Refer user'),
),
body: Column(
children: <Widget>[
Form(... form code)
Expanded(child: _getEmails()),
],
)
}
Поскольку _emails не заполняется, пока данные не возвращаются из Firestore, я получаю:
flutter: The following assertion was thrown building Expanded(flex: 1, dirty):
flutter: A build function returned null.
flutter: The offending widget is: Expanded(flex: 1)
flutter: Build functions must never return null. To return an empty space that causes the building widget to
flutter: fill available room, return "new Container()". To return an empty space that takes as little room as
flutter: possible, return "new Container(width: 0.0, height: 0.0)".
Я не понимаю, как исправить ошибку. Вид отображается правильно. Но я не хочу иметь ошибку.
StreamBuilder<QuerySnapshot> _getEmails() {
final query = Firestore.instance
.collection('emails')
.where("referer", isEqualTo: uid)
.snapshots();
return StreamBuilder<QuerySnapshot>(
stream: query,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) return Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Text('Loading...');
default:
return _makeList(snapshot);
}
},
);
//setState(() {
//_emails = emailList;
//});
//return emailList;
}
ListView _makeList(AsyncSnapshot<QuerySnapshot> snapshot) {
return ListView(
children: snapshot.data.documents.map((DocumentSnapshot document) {
return ListTile(
title: Text(document['email']),
);
}).toList(),
);
}