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

Flutter中Isar数据库如何根据手机号获取用户对象属性

解决Isar数据库查询后无法访问User属性的问题

首先你要注意:findAll()是异步方法,返回的是Future<List<User>>,如果不等待异步操作完成,你拿到的只是一个Future对象,而非实际的用户列表,这会导致无法直接访问属性。

正确操作步骤:

  1. 异步获取用户列表:把查询代码放在异步函数里,用await等待结果返回:
// 确保这段代码在async修饰的函数内部
final List<User> users = await widget.isar.users.where()
  .phoneEqualTo(phone)
  .findAll();
  1. 提取用户姓名:因为你给手机号加了索引,匹配结果应该最多只有一个用户,直接取列表第一个元素的name属性即可:
if (users.isNotEmpty) {
  String targetUserName = users.first.name;
  // 这里就可以使用targetUserName做后续操作,比如显示在UI上
} else {
  // 没有找到对应手机号的用户,做相应提示或处理
}

调试小技巧:

如果想打印时直接看到User的具体属性值,给User类重写toString()方法就行:

@Collection()
class User{
  Id? id;
  late String name;
  late String email;
  
  @Index()
  late String phone;

  @override
  String toString() {
    return 'User{id: $id, name: $name, email: $email, phone: $phone}';
  }
}

之后打印users就能看到每个实例的具体属性,方便调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:37:35