在Drift中,当检查用户是否存在时,为什么getSingleOrNull() 会返回一个非空类型?

移动开发 2026-07-07

根据数据库结构,邮箱字段不能为空。我想写一个函数来检查是否已经存在使用该邮箱的用户,但我遇到了一个错误。

Future<bool> isEmEx(String email) async {

    final query = await db.select(db.users)

    ..where((row) => row.email.equals(email))

    ..getSingleOrNull();

    return query != null;

}

错误:

操作数不能为 'null',因此条件总是为真。请移除该条件。

解决方案

你遇到了一个级联调用,其中需要进行一次调用:

final query = await db.select(db.users)
..where((row) => row.email.equals(email))
.getSingleOrNull(); // this needs the fix

现在查询将引用getSingleOrNull() 的输出,而不是db.select() 创建的查询对象。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章