我正在开发Flutter应用程序,并在logcat中不断收到此错误字符串。
Failed assertion: boolean expression must not be null
这是有问题的代码:
@override
Widget build(BuildContext context) {
return Center(
child: ListView(
children: <Widget>[
TextField(
controller: controller,
decoration: InputDecoration(
hintText: "Type in something..."
),
),
RaisedButton(
child: Text("Submit"),
onPressed: () => addString(),
),
Flex(
direction: Axis.vertical,
children: (list_two = null) ? [] :
list_two.map((String s) => Text(s)).toList()
)
],
),
);
}
是什么原因引起的问题?
答案 0 :(得分:1)
解决方案很简单,此行在这里:
Flex(
...
children: (list_two = null) ? [] :
...
)
需要让孩子比较为布尔值,这需要2个等号。
Flex(
...
children: (list_two == null) ? [] :
...
)
虽然使用Android Studio并用Java编写,但这通常会引发编译器错误并且无法运行,但是在使用Flutter插件(1.0截至今天,2018年6月26日)用dart编写时没有显示编译器错误,而是显示运行时错误。
答案 1 :(得分:0)
当您定义的布尔类型变量之一未使用默认值初始化时,会出现此问题,并且您尝试使用并将其分配为值。例如,也许您有bool isEnabled
;未定义bool isEnabled = false
;或bool isEnabled = true
;并且您尝试像readOnly: isEnabled,
为避免这些情况,请确保不会isEnabled
。这是一个如何避免这些情况的示例
null
答案 2 :(得分:0)
这个错误通常是由于使用 = 运算符检查 bool 变量时引起的