我有一个从JSON导出的不同类型值的列表。
class StudentDetailsToMarkAttendance {
int att_on_off_status;
String name;
String reg_number;
int status;
StudentDetailsToMarkAttendance(
{this.att_on_off_status, this.name, this.reg_number, this.status});
factory StudentDetailsToMarkAttendance.fromJson(Map<String, dynamic> json) {
return StudentDetailsToMarkAttendance(
att_on_off_status: json['att_on_off_status'],
name: json['name'],
reg_number: json['reg_number'],
status: json['status'],
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['att_on_off_status'] = this.att_on_off_status;
data['name'] = this.name;
data['reg_number'] = this.reg_number;
data['status'] = this.status;
return data;
}
}
我尝试使用status的值作为Checkbox
的value参数。我尝试像这样将int
解析为String
。
value:((widget.studentDetailsList[index].status = (1 ? true : false) as int)as bool)
但这种转换似乎有问题。我没有得到确切的方式转换int
到bool
在 dart 。它说
条件必须具有静态类型“bool”。
7条答案
按热度按时间o3imoua41#
要在Dart中将int转换为bool,您可以使用三元运算符:
要在Dart中将bool转换为int,您可以使用三元运算符:
9fkzdhlc2#
没有办法自动将整数“转换”为布尔值。
Dart对象有一个类型,将它们转换为不同的类型将意味着改变它们是什么对象,而这是语言选择不为您做的事情。
条件必须是布尔值,而整数不是布尔值。
Dart很少有方法在不同类型的东西之间进行隐式转换。唯一真实的的例子是将可调用对象转换为函数(通过剥离
call
方法),如果上下文需要函数,则隐式完成。(可以说,double上下文中的整数 literal 被“转换为double”,但那里从来没有整数 value。它被 * 解析为double。)所以,如果你有一个整数,想要一个bool,你需要自己编写转换。让我们假设你希望零为假,非零为真。然后你要做的就是写
myInteger != 0
,或者在这种情况下:db2dz4w83#
尝试使用getter。
然后将status传递给value。
e4eetjau4#
我知道这是一个老问题,但我认为这是一个从
int
转换为bool
的干净方法:或者是零安全
pepwfjgg5#
试试这个:
mm5n2pyu6#
我刚刚发布了一个lib,可以在dart中将任何对象转换为
bool
值,asbool(免责声明:我是作者)对于
int
对象,可以将其用作扩展(.asBool
)或辅助方法(asBool(obj)
):它也适用于任何其他对象,如字符串,可迭代对象,Map等。
5us2dqdw7#
如果你需要经常使用它,你可以创建一个扩展:
那么它可以用作: