如何解决Flutter中的“失败的断言:布尔表达式不能为空”异常

时间:2018-06-26 22:57:25

标签: dart flutter

我正在开发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() 
                )
            ],
        ),
    );
}

是什么原因引起的问题?

3 个答案:

答案 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 变量时引起的