Flutter floor 数据库 DAO 文件中的未来 bool 操作?

Flutter floor database Future bool action in DAO file?

在使用 floor 数据库时,我们可以设置一个像下面的例子一样变成布尔值的动作吗?

Future<bool> isItAdded(in user_id) async{
    var = dbClient = await db;
    List<Map> list = await dbClient.rawQuery{SELECT * FROM Users WHERE user_id}, [user_id]}
    return list.lenght > 0 ? true : false
}

你可以写DAO对象:

@dao
abstract class UsersDao {
  @Query('SELECT * FROM users WHERE user_id = :userId')
  Future<List<User>> findUsers(Int userId);
}

在此之前您需要创建实体:

@Entity(tableName: 'users')
class User{
  @PrimaryKey(autoGenerate: true)
  final int id;

  @ColumnInfo(name: 'user_id')
  final int userId;
}

您还需要创建数据库访问对象:

part 'database.g.dart'; // the generated code will be there

 @Database(version: 1, entities: [User])
 abstract class AppDatabase extends FloorDatabase {
   UsersDao get usersDao;
 }

然后通过命令生成附加代码:

flutter packages pub run build_runner build

然后在数据库访问对象中编写检查函数:

Future<bool> isItAdded(in user_id) async {
    List<User> list = await usersDao.findUsers(user_id);
    return list.lenght > 0;
}

最好的解决方案是不添加 user_id 列,只使用唯一的 id 列。