Google ha lanzado Dart 2.12, una nueva versión del lenguaje utilizado para crear aplicaciones en Flutter. El lanzamiento viene junto con Flutter 2.0.
Con el lanzamiento de Flutter 2.0, Google también está estableciendo Dart 2.12. Por si no lo sabías, Dart es el lenguaje que usa Flutter. Es un lenguaje basado en TypeScript, pero viene con algunas características adicionales del lenguaje, incluidas las que estoy a punto de repasar.
Seguridad nula
La seguridad nula es una característica del lenguaje bastante excelente. Le obliga a considerar si una variable alguna vez será nula y a tratar explícitamente situaciones potenciales nulas, al mismo tiempo que le permite garantizar que variables específicas nunca serán nulas.
En Dart 2.12, ahora hay soporte total para seguridad nula, con una sintaxis similar a Swift y Kotlin. Incluso existe la conversión inteligente, donde si Dart sabe con seguridad que una variable que normalmente acepta valores NULL no puede ser nula, implícitamente la convertirá en una forma que no admite NULL.
Dado que la seguridad nula es un cambio (muy) importante, esta característica es opcional. Si actualiza a Dart 2.12, su compilación no se interrumpirá y no tendrá que pasar horas agregando sugerencias de nulidad a todo. Incluso puedes usar dependencias seguras para nulos si tu proyecto aún no es seguro para nulos.
Una vez que decida migrar, puede utilizar la herramienta de migración integrada (dardo migrar) y/o el guía de migración para tener todo configurado.
Además, si bien la seguridad nula está incluida en Dart 2.12, si crea un nuevo proyecto Flutter, la seguridad nula no se habilitará de forma inmediata. Deberá habilitarlo manualmente. Los nuevos proyectos de Dart tendrán habilitada la seguridad nula.
Interfaz de función externa
Aunque el enfoque de Dart (y Flutter) es la compatibilidad total entre plataformas, todavía hay algunas cosas que deben hacerse de forma nativa. Para facilitar las operaciones nativas, Dart tiene una interfaz de función externa o FFI. 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 torpes.
Y con Dart 2.12, FFI ahora es estable, lo que significa que está listo para usarse en proyectos de producción y tiene en su mayoría funciones completas.
Teniendo esto en cuenta, hay algunos cambios en el FFI, incluidos un par de cambios 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 puede pasar estructuras en su código C por referencia y valor, donde antes solo se admitían referencias. Otra característica importante es la compatibilidad con estructuras anidadas, que no estaba presente antes de esta versión.
Ahora, los cambios importantes. Si estaba utilizando FFI, es posible que necesite actualizar su código para que funcione con 2.12. Con esta versión de FFI, ya no puedes crear estructuras vacías. Si necesita uno por algún motivo, puede utilizar el nuevo tipo "Opaco". También hay algunos cambios en el funcionamiento de algunas de las funciones integradas de FFI, que puede leer sobre aquí.
Finalmente, hay un nuevo paquete para FFI que le permite generar contenedores FFI a partir de archivos de encabezado C existentes, llamado ffigen. Si necesita usar una gran cantidad de código C, con muchos métodos API, esto será muy útil. Incluso si la cantidad de código C que tiene es pequeña, esta es una característica muy conveniente.
Y eso es todo para Dart 2.12. Con la adición de seguridad nula y una biblioteca de interoperabilidad C estable, Dart se está convirtiendo en un lenguaje con muchas funciones. ¡Háganos saber lo que piensa sobre Dart 2.12 en los comentarios!