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

GetStream Chat SDK如何为用户添加附加属性

Stream Chat (Flutter/Dart) 用户自定义附加属性实现方案

Stream SDK 的用户模型内置extraData字段专门承载自定义附加属性,不需要提前在后台配置字段规则,直接按以下方式操作即可:

  • 写入自定义属性
    初始化用户、更新用户信息时,将所有自定义字段以键值对形式传入extraData参数即可,服务端会自动持久化存储,注意避开内置保留字段名(id/name/image/role/online/created_at等)。

    // 客户端更新当前用户信息(携带自定义属性)
    final chatClient = StreamChatClient('YOUR_API_KEY');
    
    await chatClient.updateUser(
      User(
        id: 'user_123456',
        name: '张三',
        extraData: {
          'vip_level': 3, // 会员等级
          'is_official_verified': true, // 官方认证标识
          'personal_signature': '下班不积极思想有问题', // 个性签名
          'register_timestamp': 1690000000, // 注册时间戳
        },
      ),
    );
    

    如果是服务端批量更新用户信息,逻辑完全一致,将自定义键值对放入用户对象的extraData字段传参即可。注意普通客户端默认只有更新当前登录用户信息的权限,修改其他用户属性需要走服务端接口,或调整应用权限规则。

  • 读取自定义属性
    任意场景下拿到User对象后,直接从extraData中按key取值即可,拉取用户列表、查询会话成员时,自定义属性会默认随用户信息返回,不需要额外配置查询参数:

    // 读取当前用户的自定义属性
    final currentUser = chatClient.state.currentUser;
    final vipLevel = currentUser?.extraData['vip_level'] as int? ?? 0;
    final isVerified = currentUser?.extraData['is_official_verified'] as bool? ?? false;
    

    多端共用同一个Stream应用时,只要自定义字段的key保持一致,所有端(Flutter/Android/iOS/Web)都能正常读取对应值,不存在跨端兼容问题。

  • 注意事项

    • 自定义属性的value仅支持基础类型:字符串、数字、布尔值,以及由上述基础类型组成的List/Map,不要传入自定义类实例,否则会出现序列化失败问题
    • 自定义字段名不要使用stream_前缀,该前缀为官方预留字段前缀,可能被内置逻辑覆盖
    • 单用户的extraData总大小不要超过5KB,避免影响用户信息拉取速度

实测不需要在Stream控制台做任何额外配置,首次传入自定义字段后会自动生效,查询用户信息时默认返回所有已存储的自定义字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:36:15