¿Para qué sirve Flutter?
Flutter, contrario a lo que se puede pensar al comenzar, no es un lenguaje de programación como JavaScript, C++ o Python. Es lo que llamamos un SDK (Software Development Kit), o kit de desarrollo de software en español. Para definir de manera simple qué es un SDK, podemos compararlo con una caja de herramientas que nos ayudará a construir nuestra aplicación o sitio web. Flutter contiene:
- Una documentación propia que sirve como manual de instrucciones;
- Una biblioteca con fragmentos de código reutilizables;
- Elementos gráficos como botones, íconos, imágenes, etc.;
- Un editor de enlaces que permite conectar los diferentes archivos entre sí;
- Un compilador que traduce nuestro código fuente (el que escribimos) en código binario (comprensible para la máquina).
¿Pero para qué me sirve esta «caja de herramientas»?
Supongamos que quiero agregar un botón a mi aplicación. Si no utilizo un SDK, tendría que explicarle a mi teléfono qué es un botón: definir tamaño, bordes, colores, clics, posición, etc. Con un SDK, todo esto es mucho más sencillo, ya que estas nociones ya están predefinidas y listas para ser entendidas por la máquina. Lo único que me queda por hacer es diseñar mi botón y definir qué sucede al hacer clic en él.
Por lo tanto, esto es para lo que sirve el SDK Flutter: disponer de un conjunto de métodos que me permitan no tener que inventarlo todo desde cero y concentrarme en las funcionalidades y el diseño de mi aplicación.
Diferencia entre SDK y Framework
Un segundo término que aparece frecuentemente cuando hablamos de Flutter es el de «Framework», que significa «marco de trabajo» en inglés. Al igual que el SDK, el framework consiste en un conjunto de métodos para codificar una aplicación. Por ejemplo, permite agregar más fácilmente elementos visuales, acceder a una base de datos, establecer reglas de seguridad, etc. Se puede comparar con un libro de recetas.
Pero entonces, ¿cuál es la diferencia entre un SDK y un Framework? Pues bien, es bastante sutil, pero mientras que el framework es simplemente una biblioteca de métodos, el SDK ofrece, además de eso, una documentación, un editor de enlaces, un compilador, etc. Por lo tanto, Flutter no es un framework, sino un SDK. Para mencionar algunos de los frameworks más conocidos, podemos hablar de:
- React Native (Desarrollado por Facebook y que funciona para iOS y Android);
- Xamarin (Actualmente propiedad de Microsoft);
- Ionic (Útil para programar aplicaciones multiplataforma), etc.
¿Por qué usar Flutter para programar mi aplicación móvil?
Dado que existen diferentes SDKs, es legítimo preguntarse si Flutter es la herramienta más adecuada para el proyecto. Aquí están las ventajas y desventajas de utilizar esta herramienta en lugar de otra.
Ventajas de Flutter
En comparación con sus competidores, Flutter tiene dos grandes ventajas. Estos puntos lo convierten, en mi opinión, en una herramienta adecuada para quienes comienzan en la programación de aplicaciones móviles (como fue mi caso).
Facilidad de uso
Al crear Flutter, Google quiso ofrecer una herramienta que facilite la creación de aplicaciones móviles y reduzca el tiempo de desarrollo. De hecho, Android e iOS, los dos sistemas operativos más populares, normalmente utilizan lenguajes muy diferentes:
- Java o Kotlin para Android;
- Swift y C++ para iOS.
Esto significa que, si se quiere desarrollar para ambas plataformas, habría que programar una versión de la aplicación para Android y otra para iOS (e incluso una versión más para la web). Aprender dos o cuatro lenguajes puede resultar intimidante, especialmente para principiantes que solo quieren probar una idea. Flutter soluciona en gran parte este problema, permitiendo trabajar simultáneamente en ambas versiones, utilizando un solo lenguaje: Dart.
Mejor visualización del resultado final
Para entender este punto, necesito primero dar un poco de contexto. Al crear un elemento (como un botón) con el SDK, este debe ser «compilado» (en cierto modo, traducido) para ser interpretado por el sistema operativo.
Explicado en términos menos técnicos, imaginemos que Flutter habla en francés e iOS en inglés. Para que Flutter transmita la palabra «cuadrado» a mi Samsung Galaxy s23, primero tendría que traducirlo al inglés. Solo después de esta traducción, el teléfono podrá entender el concepto y mostrarme un cuadrado en la pantalla.
Lo que hace fuerte a Flutter es la manera en que maneja esta compilación. Aquí está la diferencia si lo comparamos con uno de sus competidores, React Native:
React Native
Cada elemento se compila individualmente como un elemento nativo para Android o iOS, que son dos sistemas diferentes. Esto puede resultar en diferencias de visualización, o incluso resultados impredecibles, al ejecutar la aplicación. A veces será necesario dedicar más tiempo al desarrollo para especificar el comportamiento esperado en cada plataforma. En un ejemplo exagerado, podría terminar con un botón de bordes cuadrados en mi iPhone y uno de bordes redondeados en un Samsung, porque ambos interpretan el código de manera diferente.
Flutter
Antes de compilar, Flutter posiciona todos los elementos (llamados widgets) en un lienzo (denominado «Canvas»). Solo después de esta etapa se realiza la compilación. Esto permite obtener un resultado similar entre iOS y Android, evitando sorpresas indeseadas.
Desventajas de Flutter
Por supuesto, existen algunas desventajas en Flutter en comparación con otros SDKs, que es importante destacar.
Limitaciones en términos de rendimiento
Como no se programa de manera nativa, es decir, en el lenguaje propio de cada sistema operativo, el rendimiento de nuestra aplicación se ve inevitablemente reducido. Esto puede ser un problema cuando se trata de proyectos pesados o bastante complejos. Al ganar tiempo en el desarrollo, existe el riesgo de perder algo en el rendimiento del producto final. Sin embargo, esta preocupación es menor para alguien que está comenzando un proyecto personal.
Archivos voluminosos
Las aplicaciones hechas con Flutter tienden a ser más pesadas que las creadas en otras plataformas. Esto puede ser un problema para los usuarios que tienen poco espacio en su dispositivo móvil.
Una comunidad todavía joven
La primera versión de Flutter se lanzó en 2017, lo que lo convierte en un SDK relativamente joven. Por lo tanto, la comunidad que trabaja con él todavía es pequeña, lo que puede dificultar encontrar recursos en línea (especialmente en francés). Esta es una de las razones que me impulsó a crear este blog.
No obstante, esta desventaja debe matizarse. El uso de esta herramienta se ha popularizado mucho desde 2020 y cada vez es más fácil encontrar respuestas a las preguntas en foros en línea.
El lenguaje Dart
Flutter utiliza su propio lenguaje, Dart. Este tiene la ventaja de simplificar la vida de los principiantes, pero el inconveniente de no ser utilizado en ningún otro lugar. Esto significa que tendrás que aprender uno o varios lenguajes adicionales si decides cambiar a otro SDK.
Conclusión
Con esto concluye esta breve presentación de Flutter. En resumen, Flutter puede ser un buen punto de partida si quieres adentrarte en la programación de aplicaciones móviles sin tener experiencia previa. Te ofrece todas las herramientas necesarias para crear una aplicación dinámica con un tiempo mínimo de aprendizaje.
Sin embargo, antes de empezar a programar, te invito a leer el siguiente artículo, que ofrece una introducción rápida al lenguaje de programación Dart.