目前,我正在从创建的sqlite数据库中获取用户,该数据库将在FutueBuilder中使用数据。现在,当我存储User数据时,在sqlite数据库中存储了一个布尔值,因为sqlite不支持布尔类型,因此将其转换为int类型。当我查询用户数据表,然后通过使用User对象将查询到的数据转换为用户对象的函数运行数据时,它出错了,因为该函数需要布尔值,而不是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));
}
}
这是用户模型和函数,它将为我将数据转换为User对象。由于模型期望布尔值,因此在此处存在问题,但是数据库现在将其传递为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'],
);
}
您可以在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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句