getter 'docs' 被调用为 null。接收者:null 尝试调用:docs

The getter 'docs' was called on null. Receiver: null Tried calling: docs

当我 运行 我的应用程序时,总是出现错误:

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,
    ),
    ],
    ),
    )
    ],
    ),
    ],
    ),
    );
    },
    ));

第一个流可以发出空快照。

在访问文档之前,您应该检查快照是否有数据:

if(!snapshot.hasData) {
 return Center(child: CircularProgressIndicator());
} 
// if it has data, do your thing:
final doc = snapshot.data.docs;
return ListView( ..... )

使您的代码正常工作的另一种解决方案是使用 null safety 并将 snapshot.data 替换为 snapshot?.data