Presentación rápida del SDK Flutter


Avatar de Pedro Cortez

¿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…


introducción a Flutter

¿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.

Existen muchos SDK que ofrecen recursos específicos para diferentes necesidades. Flutter no es necesariamente la herramienta adecuada para todos los proyectos, pero es una opción muy interesante para desarrollar una aplicación móvil tanto en Android como en iOS al mismo tiempo, y en algunos casos, incluso plataformas web.

Para saber más

Si deseas obtener más información sobre los SDK, aquí tienes un video que explica con mayor precisión de qué se trata.

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.

Atención : Aunque es una ventaja cuando se busca el mismo resultado en todas las plataformas, esta característica puede convertirse en una desventaja si se desea algo específico para cada una de ellas.

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.

Presentación del lenguaje Dart

Avatar de Pedro Cortez