Search code examples
if-statementdartconditional-statements

Dart null / false / empty checking: How to write this shorter?


This is my code for true on everything but empty string, null and false:

if (routeinfo["no_route"] == "" || routeinfo["no_route"] == null || routeinfo["no_route"] == false) {
    // do sth ...
}

This is my code for true on everything but empty string, null, false or zero:

if (routeinfo["no_route"] == "" || routeinfo["no_route"] == null || routeinfo["no_route"] == false || routeinfo["no_route"] == 0) {
    // do sth...
}

How can I write this shorter in Dart? Or is it not possible?


Solution

  • If your requirement was simply empty or null (like mine when I saw this title in a search result), you can use Dart's safe navigation operator to make it a bit more terse:

    if (routeinfo["no_route"]?.isEmpty ?? true) {
      // 
    }
    

    Where

    • isEmpty checks for an empty String, but if routeinfo is null you can't call isEmpty on null, so we check for null with
    • ?. safe navigation operator which will only call isEmpty when the object is not null and produce null otherwise. So we just need to check for null with
    • ?? null coalescing operator

    If your map is a nullable type then you have to safely navigate that:

    if (routeinfo?["no_route"]?.isEmpty ?? true) {
      //
    }