Flutter使用StreamBuilder取Firebase数据出现QuerySnapshot空类型不匹配错误
报错原因
这是Dart空安全的规则限制导致的:即便你已经通过snapshot.hasData判断当前存在有效数据,AsyncSnapshot的data属性本身仍为可空类型,Dart的类型提升逻辑不会基于hasData的判断自动将data转为非空类型,因此会触发类型不匹配错误。
解决方案
在你已经确认data不为空的前提下,直接使用空断言运算符!对snapshot.data强制解包即可,该操作在当前代码场景下是完全安全的。
修改后的完整代码如下:
StreamBuilder<QuerySnapshot>( stream: FirebaseFirestore.instance.collection('todos').snapshots(), builder: (context, snapshot){ if(!snapshot.hasData) return const LinearProgressIndicator(); return Expanded( child: _buildList(snapshot.data!), ); } ),
内容的提问来源于stack exchange,提问作者NewbieProgrammer
相关产品推荐
相关产品推荐

