如何获取Firestore users集合所有文档的userReferralCode字段值?
修改后的函数实现
Future<List<String>> getUsersReferralCodes() async { final querySnapshot = await FirebaseFirestore.instance .collection("users") .where("userReferralCode", isNull: false) .get(); // 遍历所有符合条件的文档,提取字段值并转为列表 return querySnapshot.docs .map((doc) => doc.data()["userReferralCode"] as String) .toList(); }
关键修改说明
- 移除函数内部的
setState调用:将状态更新逻辑完全交给外部的then回调处理,匹配你在initState里的使用场景 - 明确返回类型为
List<String>:如果你的邀请码是字符串类型,这个类型声明会让代码更安全,可根据实际字段类型调整 - 用
map遍历查询结果:逐个提取每个文档中的userReferralCode字段值,最终转换为列表返回 - 取消对全局变量的依赖:函数独立完成数据提取逻辑,返回结果更纯粹
对应initState中的使用示例
@override void initState() { super.initState(); getUsersReferralCodes().then((value) { setState(() { usersReferralCode = value; }); }); }
内容的提问来源于stack exchange,提问作者flutternewbiee
相关产品推荐
相关产品推荐

