En el contexto de realizar una pequeña prueba de concepto para migrar una App existente hecha en Cordova/Ionic para tener una experiencia más nativa. Se me ocurrió que React Native (Facebook) o Flutter (Google) podrían servir para mi prueba.

Tras analizar si debía invertir tiempo en React Native o Flutter, me decanté por Flutter por su facilidad para poder empezar y básicamente este video fue el que me convenció del todo.

Empezando con Flutter

La App elegida para migrar no es otra que la de FutbolApps: https://play.google.com/store/apps/details?id=com.futbolapps.lfp y elegí hacer la pantalla da consumo de noticias, es una página con scroll infinito con imágenes y detalle de noticias. El equipo elegido, el Athletic de Bilbao, ¡para que se note de dónde somos!

Cosas que me han gustado:

  • Me ha parecido una herramienta muy fácil de usar, fácil de instalar y empezar a ver ejemplos funcionando, cosa que agradezco, ya que hace 1 año tuve una experiencia horrible con react Native en ese sentido.
  • Su set de herramientas está muy bien integrado en Android Studio, la herramienta que yo usé, te permite hacer debugger y profiling muy fácilmente.
  • Tiene un montón de videos y ejemplos para aprender a usarlo, el canal de youtube en el que te enseñan widgets está muy bien. Si el widget que necesitas no existe, siempre puedes hacértelo tu escribiendo código nativo. Esto es lo que ellos llaman platform channels.
  • Al ser un producto de Google, los widgets que se encargan de Google Maps, Firebase, Google Auth, etc los tienes asegurados.
  • El rendimiento es muy buena cuando instalas la versión de Release en un dispositivo móvil, me atrevería a decir que se acerca a la experiencia nativa.
  • Visualmente se mantienen los estilos iguales tanto en Android como en iOS, eso reduce mucho el tiempo de ajustes por plataforma. El famoso “code once, run everywhere” se cumple en estas dos plataformas.
  • El lenguaje que se usa es Dart, es un lenguaje tipado que me recordó a una mezcla entre java y javascript. Una de sus fortalezas es que permite el hot reloading casi instantáneo en nuestras aplicaciones. Cosa que es un factor clave cuando desarrollamos, hacemos cambios y queremos ver qué tal ha quedado ese cambio en la App.

Lo que no me ha gustado:

  • El sistema de layout para construir las vistas es un poco tedioso, hay que conocerse bien las distintas opciones que tienes o te equivocarás muy a menudo y te frustrarás no consiguiendo la alineación que quieres. Tanto es así que hasta ellos se han dado cuenta y han añadido funcionalidad extra en el IDE, marcan como un comentario cuando termina o empieza un trozo de widget.

Trozo de código de Flutter dónde se ven los comentarios para ver cuando termina un widget.

  • BLoC pattern: me ha sido difícil entender un paradigma nuevo pero una vez cacharreas con él, es todo más fácil.

Futbol apps con Flutter

Realicé la pantalla de noticias, que tiene un scroll infinito que va pidiendo las noticias a una API de 5 en 5 junto con la vista del detalle de la noticia cuando pinchas. El código está en un repositorio para quien quiera:

https://github.com/aitoraznar/futbolapps-flutter

Un pequeño video de la App:

Conclusiones

Aún es una tecnología que no está muy madura, que aunque tenga el soporte de la todopoderosa Google, esto no quiere decir que un día decidan que ya no es rentable y se deshagan de ella. Tenemos ejemplos como Google + o Google Inbox u otros productos. Lo que no me da mucha confianza para usar este framework para apps a largo plazo.

Si tuviera que hacer una app, siempre intentaría ver el estado actual de Flutter (otra vez el tema de la comunidad y el apoyo de Google) y ver si es buen momento para hacerla, ya que la productividad me ha parecido excelente. Si fuera una App para mí, elegiría Flutter sin dudarlo ya que la experiencia nativa está asegurada.

Me encantaría saber la experiencia de otras personas con esta herramienta, yo estoy encantado.

Enlaces de interés