Saltar al contenido principal

Sound null safety

Una introducción a null safety en Dart.

El lenguaje Dart impone sound null safety, haciendo imposible acceder involuntariamente a un miembro en un valor null.

En Dart, los tipos son no nulos por defecto. Las variables de tipos no nulos deben inicializarse y solo se les pueden asignar valores no nulos.

El analyzer y los compiladores de Dart detectan el uso inseguro de valores potencialmente null en tiempo de edición, convirtiendo lo que serían errores en tiempo de ejecución en otros lenguajes en errores de análisis que puedes corregir antes de desplegar.

Ejemplos

#

Ninguna de las variables en el siguiente código puede ser null:

dart
// None of these can ever be null.
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();

Para indicar que una variable puede tener el valor null, añade ? a su declaración de tipo:

dart
int? aNullableInt = null;

Principios de null safety

#

Null safety en Dart se basa en dos principios de diseño fundamentales:

No nulo por defecto

A menos que le indiques explícitamente a Dart que una variable puede ser nula, se considera no nula. Este valor predeterminado se eligió después de que las investigaciones revelaran que el valor no nulo era, con diferencia, la opción más común en las APIs.

Totalmente seguro

Si el sistema de tipos determina que una variable o expresión tiene un tipo no nulo, se garantiza que nunca podrá evaluarse como null en tiempo de ejecución.

Juntos, estos principios dan como resultado menos errores, binarios más pequeños y una ejecución más rápida.

Recursos históricos de migración

#

Dart impone sound null safety desde Dart 3, lanzado en mayo de 2023. Si aún necesitas migrar tus aplicaciones o paquetes a null safety, consulta la documentación archivada en el repositorio dart-community/migrate-to-null-safety.