16

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?

2 Answers 2

17

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.

Sign up to request clarification or add additional context in comments.

4 Comments

The issue here is that the type of the expression is assingable to bool because in Dart, even booleans are objects and therefore nullable.
Yup, though I expect quite a few people coming over from Android development will have the same issue as looking for compiler errors is second nature while using intellij and not seeing them may cause a dev to ignore it as a possible problem.
However this solution didn't worked for me. but make sure you initialize whatever you are comparing. for example if( a == true ) in that case always initialize a with true or false ... else may be possible that a never get assign and app will break.
To avoid errors like these use Yoda Conditions.
1

this error often caused by when a bool variable is checked using = operator

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.