descubre las novedades de flutter y dart

Hace un par de días, fue la Flutter Engage, la conferencia online de referencia para la comunidad de Flutter, algo así como el WWDC o el Google IO para iOS e Android.

Se trataba de un momento muy esperado, ya que había varias tecnologías que podrían alcanzar el estatus de “estable”, después de mucho tiempo purgando bajo la etiqueta de “beta”. Entre ellas, Flutter 2.0, la nueva versión de Dart, que esperábamos que se llamase Dart 3.0, pero quedó en 2.12 (ya veremos el por qué) así como Flutter para otras plataformas (no móviles), como web y desktop.

Novedades en el lenguaje Dart

Desde hace meses, Google lleva prometiendo varios añadidos a Dart, pero sin dar jamás fecha de entrega, en plan “estará listo cuando esté listo”. Sinceramente, no me esperaba que saliese tan pronto, y estaba francamente temeroso de que saliese faltando una semana para mi módulo de Flutter en el bootcamp mobile. Afortunadamente no hay tonto sin suerte, y no se esperan más cambios sustanciales en los próximos meses.

Hay tres cosas que se echa de menos cuando vienes de Swift o Kotlin:

  1. Null safety
  2. Extensiones
  3. Data Classes

El número dos ya lo teníamos desde hace rato y null safety estaba en el horno desde hace meses. Por fin ya podemos utilizar Opcionales, con una sintaxis muy similar a la de Swift o Kotlin. Lo mejor de todo es que puedes seguir con tu código anterior que seguirá compilando. Existe una herramienta para la migración, francamente buena, y podrás hacerla cuando mejor te convenga.

Siguiendo el principio de “sorprender en lo mínimo”, la sintaxis es exactamente la misma que en Swift o Kotlin.

Lo que no cambia, es la gestión de errores, que en principio se sigue haciendo mediante excepciones: no hay de momento un Result<>.

Las Data Classes permiten automatizar la creación de métodos comunes, especialmente en el modelo, para evitar escribir mil veces el mismo código. Esto todavía no está disponible ni hay fecha para ello. Sin embargo, Dart tiene facilidades muy buenas para la metaprogramación (código que genera otro código) y ese es el camino que Google desea seguir. No me sorprendería que estuviese listo en un año.

Mientras tanto, una buena opción es Moor, una especie de Room (que a su vez es un Core Data para pobres) para Dart.

Nuevos Targets

Una de las consecuencias de la arquitectura de interfaz gráfica de Flutter es que se podría, al menos en teoría, generar el resultado final en otros formatos, creando otras subclases de RenderObject.

Parece que Google se lo tomó en serio y ahora ya tenemos los siguientes targets para tus Apps de Flutter:

  1. Mobile
    1. iOS
    2. Android
  2. Desktop
    1. Linux
    2. macOS
    3. Windows
  3. Web

Las versiones desktop aún están bastante verdes, pero ya hay empresas como Canonical y Microsoft trabajando duro en ello.

Tengo la gran esperanza que Flutter desplace a ese horror que es Electron y ya no necesitemos de 8 Gb para abrir un editor de texto.

La gran novedad, ha sido el lanzamiento de Flutter Web como plataforma estable. Echémosle un vistazo.

Flutter Web: gatillazo

Hasta ayer, cuando creas un proyecto en Flutter, te crea dos targets, iOS y Android. Ahora ya puedes añadir uno más, el web.

Lamentablemente, lo que Google llama estable, es lo que yo llamaría “le falta un hervor”. El tamaño de la app resultante es desproporcionado y el rendimiento aún deja que desear. De SEO, mejor ni hablar.

Dejémoslo en que tiene potencial, para cierto tipo de aplicaciones, y que el tiempo dirá. De momento, se clasifica como gatillazo.

Flutter Embedded: la última frontera

Otro target, que no está disponible para todos pero que resulta muy interesante, es el de embedded, o dispositivos empotrados. ¿Alguna vez has pensado en cómo se hacen las interfaces del software de tu coche?

Este es uno de los mayores mercados de dispositivos empotrados, y aquí reinan indiscutiblemente C++ y QT. Hasta ahora, ya que el mayor fabricante del mundo de automóviles ha saltado al vagón de Flutter y Dart: Toyota. A partir de ahora, el software con el que interactúa el conductor y los pasajeros será creado con Flutter y Dart.

En este sentido, es muy bienvenido el nuevo paquete Dart FFI, que aporta un nuevo mecanismo síncrono y sencillo para interactuar con código C.

Es una excelente noticia para todo desarrollador mobile, ya que nos abre la puerta a todo un mercado de dispositivos con características similares a los móviles, pero que usaba hasta ahora un stack totalmente diferente.

Flutter Desktop

Aquí el gran protagonista ha sido Canonical, la empresa creadora de Ubuntu. Ha decidido apostarlo todo por Flutter como herramienta por defecto para el desarrollo de aplicaciones de escritorio en Ubuntu. Está contribuyendo al repo de Flutter, centrándose en el soporte para múltiples ventanas (hoy por hoy no existe) y va a re-escribir el instalador de Ubuntu en Flutter.

Es una excelente noticia que me llena de esperanza de librarnos de la maldición de Electron (creo que ya lo he dicho). Además, Microsoft también está colaborando para integrarlo mejor en el entorno de Windows. Estoy cruzando los dedos y rezando novenas sin parar.

Creo que Flutter tiene más sentido y futuro en el desktop que en la web, por las características de ésta y la condición de zombie immortal de Javascript.

Conclusiones

Es muy probable que Google haya dado con el producto adecuado en el momento adecuado y que tengamos una excelente herramienta para desarrollo multiplataforma. El hecho de delegar parte del peso del desarrollo de targets no móviles a otras empresas es una buena noticia, ya que aún quedan cosas por mejorar en el núcleo de la plataforma. Por ejemplo, no estaría de más mirar lo que ha hecho Apple con SwiftUI, que ha logrado una mayor simplicidad para el desarrollador.

El estado de la gestión de estado, es también algo que tiene que ser mejorado urgentemente con una solución sencilla y potente, que cuente con el apoyo formal de Google.

No obstante, creo que se trata de una herramienta con mucho recorrido y que facilitará a muchas empresas llegar una mayor cantidad de dispositivos con calidad y con un equipo y recursos controlados.

Si quieres aprender a dominar Flutter y Dart para potenciar el desarrollo de Apps móviles, descubre nuestro Full Stack Mobile Bootcamp. Descarga el temario y conoce cada detalle del programa.

Conoce nuestros Bootcamps

Bootcamp Aprende a programar desde cero
Full Stack Web Bootcamp
Full Stack Mobile Bootcamp
Full Stack Big Data & Machine Learning Bootcamp
Full Stack DevOps Bootcamp
Full Stack Cybersecurity Bootcamp
Máster en Tecnologías Exponenciales de la Computación
Bootcamp de Marketing Digital y Análisis de datos

¡Pide más información! Nosotros te llamamos

Otras entradas que te pueden interesar:

¡Conoce nuestros Bootcamps!

Descarga el temario y descubre cómo en 6 meses podrás ser un Full Stack DevOps Bootcamp.

¿Quieres más información?