You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Firestore文档更新:好友请求功能实现疑问

实现好友请求添加的addUser方法

你需要在获取目标用户文档后,用Firestore的arrayUnion方法将当前登录用户的邮箱(或用户名)添加到目标用户的requests数组中,同时要处理未找到用户、未登录等异常情况,避免报错。

完整的addUser方法代码如下:

void addUser() async {
  // 获取当前登录用户的邮箱(若你的用户体系用用户名,替换成对应字段即可)
  final currentUserEmail = FirebaseAuth.instance.currentUser?.email;
  if (currentUserEmail == null) {
    // 处理用户未登录的场景,比如弹出提示
    return;
  }

  final querySnapshot = await _firestore
      .collection("users")
      .where("email", isEqualTo: _search.text)
      .get();

  if (querySnapshot.docs.isNotEmpty) {
    // 获取目标用户的文档引用
    final targetUserDoc = querySnapshot.docs[0].reference;
    // 用arrayUnion添加请求,自动忽略已存在的请求,避免重复
    await targetUserDoc.update({
      "requests": FieldValue.arrayUnion([currentUserEmail])
    });
    // 这里可以添加请求发送成功的提示,比如Toast或弹窗
  } else {
    // 处理未找到目标用户的场景
  }
}

关键说明

  • 优先通过FirebaseAuth获取当前登录用户信息,确保操作的合法性。
  • 使用arrayUnion而非直接修改数组,它会自动跳过数组中已存在的元素,防止重复发送好友请求。
  • 增加了查询结果为空的判断,避免因找不到目标用户触发空指针错误。

内容的提问来源于stack exchange,提问作者Saubhagya Kushwaha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:01:09