Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I solve the 'Failed assertion: boolean expression must not be null' exception in Flutter

Tags:

flutter

dart

I was working on a Flutter application and kept receiving this error String in the logcat.

Failed assertion: boolean expression must not be null

Here is the code in question:

@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() 
                )
            ],
        ),
    );
}

What is causing the problem?

like image 953
PGMacDesign Avatar asked Jun 26 '18 22:06

PGMacDesign


2 Answers

The solution was a simple one, this line here:

            Flex(
                ...
                children: (list_two = null) ? [] :
                ...
            )

Needed to have the children comparison be a boolean, which requires 2 equals signs.

            Flex(
                ...
                children: (list_two == null) ? [] :
                ...
            )

While using Android studio and writing in Java, this would normally throw a compiler error and not run, but while writing in dart with the Flutter plugin (1.0 as of today, 2018-06-26) no compiler error is shown and we instead see a runtime error.

like image 147
PGMacDesign Avatar answered Sep 21 '22 13:09

PGMacDesign


This problem occurs when one of your defined boolean type variable is not initialized with default value, and you try to use and assign it somewhere as value. example maybe you have you bool isEnabled ; is not defined as should bool isEnabled = false; or bool isEnabled = true; and you try to use it like readOnly: isEnabled,

To avoid these to ensure isEnabled won't be null. Here is a kind of example of how we can avoid these

bool isChecked = false;

Checkbox(
  value: isChecked,  // initialized with `true/false` also avoids the error,
  onChanged ...
)
like image 39
Paresh Mangukiya Avatar answered Sep 18 '22 13:09

Paresh Mangukiya