Flutter中为StreamBuilder创建UDF:返回类型与实现疑问
解决StreamBuilder自定义UDF的返回类型与实现问题
正确的返回类型与函数实现
你写的myudf函数返回类型不能是void,因为StreamBuilder的stream参数需要接收一个Stream类型的值。Firebase Firestore的snapshots()方法返回的是Stream<QuerySnapshot<Map<String, dynamic>>>,所以你的函数必须返回这个类型。
修正后的函数代码如下:
Stream<QuerySnapshot<Map<String, dynamic>>> myudf() { return FirebaseFirestore.instance .collection("chatrooms") .where("participants.${widget.usermodel.uid}", isEqualTo: true) .snapshots(); }
调用示例
把这个函数传入StreamBuilder的stream参数即可:
child: StreamBuilder( stream: myudf(), builder: (context, snapshot) { // 你的builder逻辑 }, )
补充说明
- 必须加上
return关键字,把Firestore查询的Stream返回出去,否则函数不会返回任何值,StreamBuilder会接收空值导致异常。 - 如果
widget.usermodel.uid可能为null,建议添加空值判断,避免生成无效的查询条件。
内容的提问来源于stack exchange,提问作者Irfan Ganatra
相关产品推荐
相关产品推荐

