Junto al lanzamiento de Flutter 2.0, Google también está lanzando una nueva versión del lenguaje de programación Dart: Dart 2.12.
En caso de que aún no lo supieras, Dart es el lenguaje que usa Flutter. Es un lenguaje basado en TypeScript, pero que viene con algunas funciones adicionales del lenguaje, incluidas las que se intentará repasar a continuación.
Seguridad Nula
La seguridad nula es una característica del lenguaje que obliga a considerar, si una variable alguna vez será nula, y a tratar explícitamente las posibles situaciones en el caso de que eso sea así.
Al mismo tiempo, eso permite garantizar que variables concretas nunca sean nulas.
En Dart 2.12, existe la posibilidad de implementar la seguridad nula, a través de una sintaxis similar a Swift o Kotlin.
Incluso existe la posibilidad de utilizar la transmisión inteligente, donde si el propio lenguaje ve que una variable que normalmente acepta valores NULL no puede ser nula, la convertirá implícitamente en una forma que no admite valores NULL.
No es obligatorio implementar está opción si actualizas a Dart 2.12, existe la opción de mantenerlo inactivo; puesto que es un cambio importante dentro del código, y podría afectar directamente al código de las versiones de aplicaciones creadas con anterioridad.
Una vez que decidas migrar a Dart 2.12, puedes utilizar la herramienta de migración incorporada (migración de dart) y / o la guía de migración para configurar los posibles cambios.
Aunque la seguridad nula se incluye en Dart 2.12, si creas un nuevo proyecto de Flutter o Dart, la seguridad nula no se habilitará por defecto. Deberás ejecutar la herramienta de migración o utilizar la guía para habilitarla.
Interoperabilidad con C Mejorada
A pesar de que el enfoque de Dart (y Flutter) está en la compatibilidad total entre plataformas, todavía hay algunas cosas que solo deben hacerse de forma nativa. Para facilitar las operaciones nativas, Dart tiene una interfaz de función externa, o FFI.
El FFI te 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.
Con Dart 2.12, el FFI ahora es estable, lo que significa que está listo para usarse en proyectos de producción. Además, existen algunos cambios importantes respecto al FFI.
La mayor parte del enfoque del trabajo sobre esta versión se centro en cómo se pueden usar las estructuras entre C y Dart.
Por un lado, ahora puedes pasar estructuras de código en C por valores y referencias, donde anteriormente solo se admitían referencias; y por otro lado, se ha implementado la compatibilidad con estructuras anidadas.
Si ya estabas utilizando FFI, es posible que debas actualizar el código para que funcione con 2.12.
Con esta versión de FFI, ya no podrás crear estructuras vacías y si necesitases una por algún motivo, puedes utilizar el nuevo tipo
opaque
.
Finalmente, hay un nuevo paquete para FFI que te permite generar contenedores FFI a partir de archivos de encabezado C ya existentes; llamado ffigen.
Si tienes mucho código en C que necesitas usar, con muchos métodos de API incluidos o incluso para cantidades más pequeñas de código en C. este nuevo paquete ffigen, podría serte bastante útil.