当我运行我的应用程序时,总是会出现一个错误:
The getter 'docs' was called on null.
Receiver: null
Tried calling: docs
但一切正常,我该如何解决? 我认为 flutter 有一个更新导致这段代码出错,因为我遇到了很多这样的问题。 我的代码中的重要部分:
return StreamBuilder(
stream: FirebaseFirestore.instance
.collection('medicine')
.where('userId', isEqualTo: user.uid)
.snapshots(),
builder: (context, snapshot) {
final doc = snapshot.data.docs;
return ListView.builder(
itemCount: doc.length,
itemBuilder: (ctx, index) {
if (snapshot.data == null) {
return Center(
child: CircularProgressIndicator(),
);
}
return Container(
child: Stack(
children: [
Row(
children: [
Flexible(
child: Column(
children: [
Text(
'اسم الدواء: ' + doc[index]['medicationName'],
textAlign: TextAlign.start,
),
],
),
)
],
),
],
),
);
},
));
答案 0 :(得分:3)
第一个流可以发出一个空快照。
您应该在访问文档之前检查快照是否有数据:
if(!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
}
// if it has data, do your thing:
final doc = snapshot.data.docs;
return ListView( ..... )
答案 1 :(得分:0)
使您的代码正常工作的另一种解决方案是使用 null safety 并将 snapshot.data 替换为 snapshot?.data