Cuando se trata de construir aplicaciones móviles híbridas, JavaScript siempre ha sido considerada como la mejor herramienta para este trabajo, ya sea a través de Cordova con Ionic (Angular o VueJS) o de React Native. 

 

Pero últimamente identificamos la aparición de Flutter, tanto en términos de la experiencia del desarrollador como de la calidad de las aplicaciones que puede producir, posicionándose como una de las mejores alternativas.

Flutter nos proporciona unas ventajas e inconvenientes que lo hacen favorable para aplicarlo en una amplia variedad de proyectos. Pasamos a detallar qué aspectos tenemos que tener en cuenta para tomar la decisión.

1
Entender Flutter para desarrolladores de Angular2/Vue/Javascript

Dart como lenguaje de base en Flutter

Si ya eres un desarrollador web o desarrollador con JavaScript, especialmente de frameworks como VueJS o Angular, puedes saltar a un proyecto de React Native sin pasar por ninguna curva de aprendizaje. 

Los Bootcamps de desarrolladores (principalmente en JavaScript), están formando a una gran cantidad de talento a diario, lo que permite a las empresas que utilizan frameworks como Angular, Vue o frameworks de apps híbridas como Ionic con Cordova, ahorrar mucho tiempo y dinero para capacitarse en estas tecnologías. 

Flutter usa Dart para programar y Angular, VueJS e Ionic usan JavaScript. De esta forma indicar que la curva de aprendizaje por lo tanto en apps con JavaScript es tremendamente suave en comparación con la que necesitas para Dart.

Aun así, es de justicia decir que Dart tiene una de las mejores documentaciones que existen para cualquier framework. 

Antes de que Google anunciara Flutter, Dart estaba prácticamente invisible, pero ahora ha ganado bastante importancia gracias al soporte que le proporciona una empresa como Google. Es una alternativa real ante opciones como React Native o los desarrolladores a quienes no les gustaba JavaScript como lenguaje de programación.

Mejor rendimiento

Dart quizás no sea el lenguaje más fácil de aprender, pero este está escrito en C++ lo que propicia que su rendimiento sea mucho mayor. 

Si tu aplicación va a requerir de realizar una gran cantidad de llamadas, simplemente va a funcionar mejor que con JavaScript

Dart también puede integrar código nativo existente, puede hacer recargas en caliente durante el desarrollo. Con la aplicación de estas técnicas, nos va a permitir la mejora de los rendimientos del proyecto. 

2
Javascript VS Flutter

Comparativa de estructura de proyectos

Para empezar vamos a realizar una comparación de la estructura del proyecto entre una aplicación de Ionic con Angular y otra de Flutter

Para realizar la comparación vamos a generar ambos proyectos usando las interfaces de línea de comandos que nos proporcionan ambas tecnologías. Estos nos generan la estructura de un pequeño proyecto para tener un punto de comienzo. 

Al crear un proyecto Ionic con Angular, podrás ver que hay muchos más archivos que en el proyecto Flutter, pero esto es porque se separan las plantillas y el CSS en sus propios archivos aislados. Esta es una buena manera de separar las preocupaciones, pero también puede ser un volumen abrumador de ficheros si estás saltando a un proyecto Ionic con Angular por primera vez en tu vida, especialmente si no conoces Angular

Existe una larga lista de dependencias Angular que deberías conocer, pero como Ionic usa web component, así que podrás usarlo con casi cualquier framework (Angular, Vue, ...). 

Para la generación inicial del proyecto Flutter, se utiliza NPM como gestor de dependencias. Como resultado obtendremos una estructura de proyecto similar a una aplicación de React normal, con algunos componentes especiales para renderizar el interfaz de usuario de manera nativa.

En un proyecto con Flutter verás de inmediato que es mucho menos complejo, y solo tenemos un único archivo llamado main Dart como punto de entrada a nuestra aplicación. 

Con Flutter, todo desarrollo se simplifica en un inicio:

  • El archivo solo tiene 45 líneas de código. 

  • No tiene importaciones ni exportaciones. 

  • No tiene boilerplates

  • Si queremos ejecutar la aplicación podremos hacerlo directamente desde una línea de comandos.

  • No hay necesidad de depurar en el navegador. 

  • En cualquier momento hacer un cambio en su código, solo tienes que introducir R en la línea de comandos, y se recargará el código y guardará el estado de la propia aplicación actual. 

  • Si quieres agregar alguna dependencia a Flutter solo tendrás que añadirla directamente al SDK y automáticamente se actualizará las dependencias cuando guardas.

Si te gusta la simplicidad, puede que te guste Flutter, pero si quieres aprender Flutter significa que tendrás que aprender otro lenguaje de programación, pero por suerte comparte muchas de las mismas convenciones de JavaScript.