Quando si programma un’App in Flutter spesso si incappa nel “Null Safety” introdotto di default dalla versione 2 di Flutter.

Che cos’è il Null Safety?

Il Null Safety impedisce che una variabile possa essere non inizializzata e quindi abbia come valore null.

Questo significa che tutte le variabili una volta dichiarate devono essere inizializzate prima di essere utilizzate.

Se la variabile non viene inizializzata si va incontro ad un errore.

Perché è abilitato di default il Null Safety?

Il Null Safety è abilitato di default per tre ragioni pricipali:

  • Riduce i bug previene crash causati da valori nulli inaspettati.
  • Migliora il codice rende il codice più chiaro e leggibile.
  • Aumenta la stabilità rende l’app più affidabile e robusta.

Quindi non posso utilizzare variabili non inizializzate?

L’unico modo per dichiarare che una variabile può essere nulla, ed inibire quindi il Null Safety, basta aggiungere l’operatore ? dopo il tipo della variabile dichiarata:

String? nome

Nell’esempio sopra abbiamo disattivato il Null Safety sulla variabile nome, che può essere o una String o null.

Quando è necessario disattivare il Null Safety?

Vediamo un esempio pratico: ho una classe dove per necessità ho dovuto dichiarare un parametro disabilitando il Null Safety.

Class Classe{
...
String ? varabile;
...
}

Devo richiamare questo parametro all’interno del Widget Text:

Text(classe.variabile)

Il Widget Text aspettandosi un dato di tipo String generare il seguente errore “The argument type ‘String’ can’t be assigned to the parameter type ‘String'”

Errore flutter "The argument type 'String' can't be assigned to the parameter type 'String'"
“The argument type ‘String’ can’t be assigned to the parameter type ‘String'”

Soluzione: aggiungere un testo di default nel caso la variabile risulti null:

Text(classe.variabile ?? "Testo di default in caso di variabile nulla")