Con ellanzamiento de Flutter 2.0, Google también incorpora Dart 2.12 a la versión estable. Por si no lo sabías, Dart es el lenguaje que utiliza Flutter. Es un lenguaje basado en TypeScript, pero incluye algunas funciones adicionales, incluidas las que voy a repasar a continuación.

Seguridad nula

La seguridad nula es una característica del lenguaje muy buena. Te obliga a considerar si una variable alguna vez será nula y a lidiar explícitamente con situaciones nulas potenciales, al mismo tiempo que te permite garantizar que variables específicas nunca serán nulas.

En Dart 2.12, ahora hay soporte completo para la seguridad de valores nulos, con una sintaxis similar a Swift y Kotlin. Incluso hay una conversión inteligente, donde si Dart sabe con certeza que una variable que normalmente acepta valores nulos no puede ser nula, la convertirá implícitamente a una forma que no acepte valores nulos.

Dart 2.12 no admite valores nulos

Dado que la seguridad frente a valores nulos es un cambio (muy) disruptivo, esta función es opcional. Si actualiza a Dart 2.12, su compilación no se romperá y no tendrá que pasar horas agregando sugerencias de nulidad a todo. Incluso puede usar dependencias seguras frente a valores nulos si su proyecto aún no es seguro frente a valores nulos.

Una vez que decida migrar, puede utilizar la herramienta de migración incorporada (dart migrants) y/o laguía de migraciónpara configurar todo.

Además, si bien la seguridad frente a valores nulos está incluida en Dart 2.12, si creas un nuevo proyecto de Flutter, la seguridad frente a valores nulos no estará habilitada de fábrica. Deberás habilitarla manualmente. Los nuevos proyectos de Dart tendrán habilitada la seguridad frente a valores nulos.

Interfaz de función externa

Aunque Dart (y Flutter) se centran en la compatibilidad total entre plataformas, todavía hay algunas cosas que simplemente deben realizarse de forma nativa. Para facilitar las operaciones nativas, Dart tiene una interfaz de función externa o FFI. La FFI le permite interactuar con el código C de Dart sin tener que recurrir a extrañas llamadas API basadas en cadenas u otros métodos de interoperabilidad engorrosos.

Y con Dart 2.12, el FFI ahora es estable, lo que significa que está listo para usarse en proyectos de producción y está prácticamente completo en cuanto a funciones.

Con esto en mente, hay algunos cambios en el FFI, incluidos un par que son importantes.

La mayor parte de la atención de esta versión se centró en cómo se pueden utilizar las estructuras con Dart y C. Por un lado, ahora se pueden pasar estructuras en el código C por referencia y valor, mientras que antes solo se admitían referencias. Otra característica importante es la compatibilidad con estructuras anidadas, que no existía antes de esta versión.

Ahora, los cambios importantes. Si estaba usando FFI, es posible que deba actualizar su código para que funcione con la versión 2.12. Con esta versión de FFI, ya no puede crear estructuras vacías. Si necesita una por alguna razón, puede usar el nuevo tipo "Opaque". También hay algunos cambios en el funcionamiento de algunas de las funciones integradas de FFI, sobre los cuales puedeleer aquí.

Por último, hay un nuevo paquete para FFI que le permite generar contenedores FFI a partir de archivos de encabezado C existentes, llamadoffigen. Si tiene mucho código C que necesita usar, con muchos métodos API, esto será bastante útil. Incluso si la cantidad de código C que tiene es pequeña, esta es una característica conveniente y agradable.


Y eso es prácticamente todo sobre Dart 2.12. Con la incorporación de seguridad frente a valores nulos y una biblioteca de interoperabilidad estable en C, Dart se está convirtiendo en un lenguaje con muchas características. ¡Cuéntanos qué piensas sobre Dart 2.12 en los comentarios!