¡Compártelo!
Share on facebook
Share on twitter
Share on linkedin

Flutter, el SDK de Google para desarrollar apps multiplataforma con rendimiento nativo

En este post, analizaremos qué es Flutter, el SDK de Google que nos permitirá desarrollar aplicaciones multiplataforma (cross-platform) con rendimiento nativo para hasta 6 plataformas: web, móvil (Android e iOS) y desktop (Windows, Linux y Macintosh). Todo ello, mediante a un único bloque de código escrito en Dart, el famoso lenguaje de programación de Google.

En el artículo anterior hablamos de los distintos tipos de caminos/enfoques que podemos escoger a la hora de desarrollar una app para mobile. Una vez ya estamos familiarizados con los distintos tipos de aplicaciones móviles y, además, conocemos los pros y contras de cada uno de los tipos, tomad asiento porque os vamos a presentar a ¡un todoterreno! Nada más y nada menos que una “bestia parda” como es Flutter, el framework de Google.

Qué es Flutter

¿Qué es Flutter? Breve historia

Flutter es un framework que nos proporciona un toolkit (conjunto de herramientas) que tienen como finalidad el crear interfaces de software. Creado por Google, se presentó en 2015, aunque su lanzamiento no se produjo hasta 2018. En sus inicios, Flutter fue desarrollado para realizar apps que pudieran ejecutarse tanto en Android como en iOS (por tanto, estaba enfocado a desarrollar aplicaciones híbridas) con rendimiento nativo.

Ya en marzo de 2021 y, durante la Flutter Engage, Google lanza su versión 2 (para muchos conocida como Flutter 2). La cual está cargada de novedades, pero es totalmente compatible con la versión anterior. Y si la primera versión ya tenía grandes beneficios, esta segunda versión es la gran culpable de que os hayamos presentado este framework como un todoterreno y como una “bestia parda”.

Ya que, Flutter 2 nos permite realizar aplicaciones multiplataforma hasta para 6 plataformas utilizando Dart como lenguaje de programación (también creado por Google y OpenSource).

Desarrollo multiplataforma
Flutter 2 permite desarrollar apps en 6 plataformas. Fuente: Flutter

Tener a un gigante como Google como creador del framework se traduce en un seguro de vida, una garantía de confianza, que nos asegurará el mantenimiento con constantes contribuciones.

Características de Flutter

No podemos hablar de Flutter sin detenernos a explicar sus cuatro grandes pilares, sus cuatro grandes características, que son:

Características de Flutter
Características de Flutter

Fast (rápido / veloz)

Flutter nos permite desarrollar aplicaciones más rápido proporcionándonos un conjunto de herramientas con el fin de agilizar/mejorar tanto el desarrollo como el rendimiento de la aplicación.

Herramientas que mejoran el desarrollo de la aplicación:

Stateful Hot Reload de Flutter

Stateful Hot Reaload (recarga en caliente con estado) nos permite realizar cambios en nuestro código y que estos se reflejan instantáneamente en la vista previa de nuestra aplicación. Con Hot Reload aumentamos la velocidad de desarrollo y nos puede llegar a hacer hasta 3 veces más productivos.

Stateful Hot Reload de Flutter
Stateful Hot Reload de Flutter. Fuente: Flutter

Herramientas que mejoran el rendimiento de la app:

Compilación JIT vs. OAT con Dart

Con anterioridad, se han presentado muchos frameworks cuya finalidad es la de intentar buscar un rendimiento excelente. Pero la gran mayoría, por una cosa u otra, no llegan a cumplir lo que prometen ya que se basan en el uso de webviews, etc., que de una manera u otra acaban penalizando/ralentizando el rendimiento de la aplicación.

En cambio, Flutter tiene un rendimiento nativo y el gran culpable de ello es Dart, un lenguaje de programación creado por Google que realiza dos tipos de compilación dependiendo del objetivo que tengamos en cada momento:

Inicialmente durante el desarrollo de una aplicación, Flutter realiza la compilación JIT (Just In Time). Este tipo de forma de ejecutar el código implica que la compilación de un programa se realiza durante su propia ejecución y no previamente a su ejecución. Esto es lo que permite que utilicemos herramientas como la recarga en caliente (Stateful Hot Reload) y que podamos visualizar los cambios a tiempo real. En este primer tipo de compilación se requiere que el código sea interpretado por una máquina virtual.

Más tarde, ya cuando tenemos listo el desarrollo de nuestra aplicación y queremos preparar la aplicación (realizar una release), el código se compila esta vez con anticipación (OAT), es decir, previamente a su ejecución, convirtiendo el código escrito en Dart a código nativo. Con el fin de obtener un mejor rendimiento en el dispositivo, reducir su tamaño al mínimo que se pueda y eliminar otras cosas que únicamente son útiles durante el modo de desarrollo. En este segundo tipo de compilación no se requiere el uso de una máquina virtual para interpretar el código ya que lo hace el dispositivo directamente.

Compilación de Dart.
Compilación en Dart.

Skia, el motor de gráficos 2D

Otra herramienta que tiene como finalidad mejorar el rendimiento es Skia. Flutter renderiza su interfaz y no se lo deja a la plataforma, como sí pasa en otros frameworks, permitiéndonos hacer aplicaciones con altos FPS (Fotogramas Por Segundo) utilizando Skia para su renderizado.

Skia, es una biblioteca de renderizado de gráficos 2D (escrita en C++) la cual únicamente necesita un único lienzo (Canvas), que contiene todo lo que está ejecutando Flutter y en la que añadimos los elementos de nuestra interfaz. Provocando que nuestras aplicaciones sean muy veloces y que consuman muy pocos recursos.

Canvas, es un elemento que se introdujo en HTML que nos permite generar gráficos dinámicamente mediante nuestro código. Os dejo un link por si queréis obtener más información.

Open (abierto)

Tanto Flutter como Dart son OpenSource, ambos son de código abierto. Pero también, a su vez, podemos afirmar que la comunidad de Flutter es muy abierta, lo que provoca que constantemente se genere una gran cantidad de documentación gracias a los aportes de Google combinados con los del resto de la comunidad de desarrolladores. Todo este trabajo por parte de la comunidad, provoca que se siga incrementado la popularidad de este SDK.

Os dejo el link hacía algunos enlaces de su comunidad.

Beautiful (apps hermosas / bellas)

Con Flutter podemos diseñar aplicaciones con interfaces desde muy sencillas hasta interfaces muy vistosas y expresivas. Que, como podéis ver en la imagen son muy bellas y, en caso de tener una necesidad muy concreta, pueden ser enormemente personalizadas.

Ejemplos de aplicaciones desarrolladas con Flutter
Ejemplos de aplicaciones desarrolladas con Flutter. Fuente: Flutter

Productive (productivo)

Flutter nos permitirá generar aplicaciones multiplataforma (tanto para móviles, desktop y web). Como hemos dicho anteriormente, hasta para 6 plataformas a partir de tan solo una única base de código escrita en Dart.

¿Quién usa Flutter?

Flutter está siendo utilizado cada vez más compañías, entre las que también se incluyen grandes de la industria como son BMW, Ebay, Alibaba y muchas otras más y entre los que no podría faltar su creadora, el propio Google.

Empresas que utilizan Flutter
Empresas que utilizan Flutter. Fuente: Flutter

Conclusión

Espero que este artículo os haya servido para conocer mejor el prometedor e interesantísimo mundo del SDK Flutter, qué es exactamente y cuáles son las características que hacen que este framework sea tan interesante para desarrollar aplicaciones multiplataforma con rendimiento nativo. Espero que os haya animado a seguir indagando en él.

Para terminar, os comparto que Google lanzó un concurso en el que se tenían que crear apps que solamente podían tener 5 KB o menos de código Dart. Estos fueron los resultados. ¿Os animáis a crear una app con Flutter? En este tutorial os mostramos cómo instalar y configurar Flutter para empezar a trabajar con él.

¿Te gustaría llevar a cabo un proyecto de desarrollo mobile? Desarrollamos apps móviles para impulsar el negocio de nuestros clientes. Contacta con nosotros.

Artículos relacionados

Tipos de aplicaciones móviles

Principales tipos de aplicaciones móviles: ventajas, desventajas y ejemplos

En este artículo explicaremos los diferentes tipos de aplicaciones móviles que podemos desarrollar, compararemos las ventajas y desventajas de cada uno de ellos y analizaremos algunos ejemplos, en los que los requisitos nos harán decantarnos por un tipo de app móvil u otro. También repararemos

Cómo ejecutar una aplicación Spring Boot como un servicio Linux

Cómo ejecutar una aplicación Spring Boot como un servicio Linux

En este post veremos cómo ejecutar una aplicación Spring Boot como un servicio Linux configurado desde un bash con configuración externa. Empaquetado, configuración y construcción del proyecto En primer lugar, explicaremos las opciones de empaquetado, la configuración del proyecto y la construcción de este. Empaquetado

Quiero desarrollar una app móvil… ¿Por dónde empiezo?

Estoy seguro de que en alguna ocasión se te ha ocurrido alguna idea o solución de negocio relacionadas con el mundo de las aplicaciones móviles, quizá te has propuesto ir un poco más allá y plantear el posible desarrollo de esa idea… Pero, ¿por dónde