【问题标题】:Can you parse an int from a sqlite database that was originally a bool, back into a bool after querying the database?你能从sqlite数据库中解析一个int,原来是一个bool,在查询数据库后重新变成bool吗?
【发布时间】:2021-02-23 16:38:54
【问题描述】:

我目前正在从我创建的 sqlite 数据库中获取用户,我将在其中使用 FutueBuilder 中的数据。现在,当我存储用户数据时,有一个 Bool 存储在 sqlite 数据库中,因为 sqlite 不支持布尔类型,所以它变成了一个 int。当我查询用户数据表,然后通过使用用户对象将查询数据转换为用户对象的函数运行数据时,它会出错,因为该函数需要一个布尔值,而不是一个 int。我能做些什么来解决这个问题?

这是我查询用户数据表的地方,然后将结果发送到函数以添加到我的用户列表中

  Future<dynamic> getUser() async {
    List _user =[];
    final db = await database;
    var res = await db.query("user");
    if (res.length == 0) {
      return null;
    }
    else {
      var resMap = res[0];
      return _user.add(User.fromJson(resMap));
    }
  }

这是用户模型和将数据转换为我的用户对象的函数。由于模型需要一个布尔值,这就是它存在问题的地方,但是数据库现在将一个 int 传递给它,因为它将原始布尔值转换为一个 int。

User userFromJson(String str) => User.fromJson(json.decode(str));


class User {

  bool success;

  String userID;

  String firstName;

  String lastName;

  String email;


  User({this.success, this.userID, this.firstName, this.lastName, this.email});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      success: json['success'],
      userID: json['UserID'],
      firstName: json['FirstName'],
      lastName: json['LastName'],
      email: json['Email'],
    );
  }

【问题讨论】:

    标签: sqlite flutter flutter-dependencies


    【解决方案1】:

    您可以在 User.fromJson 函数上放置一个三元运算符。看看:

    factory User.fromJson(Map<String, dynamic> json) {
        return User(
          success = json['success'] == 1 ? true : false,
          userID = json['UserID'],
          firstName = json['FirstName'],
          lastName = json['LastName'],
          email = json['Email'],
        );
      }
    

    这样,如果值为 1,则将值设置为 true,如果为 0(或任何其他值),则将值设置为 false。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2017-09-30
      • 2011-10-26
      • 2023-03-15
      • 2018-03-25
      • 1970-01-01
      • 2012-05-11
      相关资源
      最近更新 更多