Que es Flutter y por que deberías aprenderlo

Que es Flutter y por que deberías aprenderlo


programa curso Hackademy Hackademy

“Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.”   

fonte: flutter.dev

¿Qué es Flutter?

En otras palabras Flutter es un framework open-source ideado directamente por Google para responder a la continua evolución de los dispositivos móviles. El objetivo de Flutter es el de utilizar una única codebase para el desarrollo de aplicaciones cross platform que se ejecutan de forma nativa en dispositivos Android y en dispositivos IOS, además con las últimas versiones, y ahora estables, incluidas la Web y el Escritorio.

Las prestaciones originales de Flutter provienen de un sustrato escrito C/C++, o mejor llamado Flutter Engine, y una capa escrita en Dart.

La arquitectura de Flutter

La arquitectura de Flutter se puede resumir con la siguiente imagen:

Fonte: Architettura/flutter.dev

Los niveles de Flutter:

  • Embedder: proporciona un punto de entrada al sistema operativo subyacente. Este nivel está escrito en el idioma apropiado para la plataforma en la que se ejecuta, actualmente. Java y C++ per Android, Objective-C/Objective-C++ para iOS y macOS, y C++ para Windows y Linux. En otras palabras, permite que las aplicaciones escritas en Flutter se ejecuten en cualquier sistema operativo. 
  • Flutter Engine: es el núcleo de Flutter, escrito todo en C/C++, se encarga de proporcionar soporte de bajo nivel para renderizar widgets de la aplicación Flutter, usando la biblioteca Skia para las animaciones 2D. El motor se expone en el primer nivel (Framework) a través de la biblioteca dart:iu que expone funcionalidades originales de bajo nivel como las de text-rendering y la gestión I/O. 
  • Dart: es un lenguaje estructurado y flexible creado por Google. Trabaja en estrecha colaboración con Flutter Engine con el que puede proporcionar la función de “Hot-Reload”, es decir, cualquier cambio de código se inyecta inmediatamente en la aplicación para ver los cambios al instante sin un reinicio completo.

 

Ejemplo de Hot-Reload

Flutter se lanzó al mercado en mayo 2017 pero la primera versión estable data de diciembre de 2018. Desde entonces no tardó en aumentar su popularidad y su uso por parte del público. Hasta la fecha (diciembre 2021) Flutter cuenta con 133k estrellas en github en comparación con casi 100k de react-native. Estos valores también se pueden intuir en Google trend en la imagen a continuación con sus otros competidores.

¿Pero por qué usar Flutter?

Después de describir brevemente algunos detalles técnicos del funcionamiento de Flutter y notar cuanto su popularidad está en fuerte aumento en comparación con su competidor más directo, nos preguntamos, ¿por qué usarlo? ¿Cuál es realmente su valor añadido? 

Veamos juntos algunas características interesantes de Flutter que me han impulsado a adoptarlo, olvidando por completo las herramientas antiguas. 

1# Single Codebase

Como ya hemos dicho, Flutter garantiza el desarrollo de una aplicación 

aprovechando una única base de código. En pocas palabras, con el mismo código con el cual se crea una aplicación IOS se puede generar una aplicación Android o Web o Desktop. Esta característica es estable desde el lanzamiento de la versión 2.0

2# Hot-Reload y velocidad de desarrollo

Esta característica permite a los desarrolladores poder observar instantáneamente las modificaciones efectuadas en el código, garantizando un mayor rendimiento de desarrollo y tiempos de depuración más optimizados.

3# Ecosistema rico de Widget

Podemos describir Flutter como un completo Widget. Todo lo que hay dentro es un widget y los Widget pueden ser tanto clases como funciones, lo que de hecho permite la aplicación de los principios de la programación orientada a objetos en el desarrollo de la interfaz del usuario.

Cada Widget se puede personalizar al gusto, por ejemplo, puede envolver widget dentro de otros para garantizar funciones específicas en diferentes resoluciones de pantallas. 

Flutter ofrece una gran variedad de Widget de interfaz de usuario que respetan todos los principios clave actuales de diseño y de aplicaciones web y móviles, ofreciendo siempre un excelente rendimiento.

Su SDK es capaz de garantizar todo esto ya que es el único que no utiliza ningún Bridge en Javascript para la creación de componentes, pero funciona haciendo que el núcleo se comunique directamente con el dispositivo, lo que aumenta drásticamente su rendimiento.

Los Widget en Flutter están organizados a través de un árbol, donde cada uno de ellos puede contener otros y así sucesivamente. Será el programador quien deberá prestar atención a la organización de los Widget en la aplicación, tratando de ingeniar mejor el desarrollo.

Ejemplo de un widget tree en Flutter:

  

4# Dart

Dart es un lenguaje creado por Google, que incluye tanto una escritura fuerte como débil, además ofrece una rica biblioteca estándar, un garbage collection, generics y async-await. Dart es muy similar a Java pero para muchas características está inspirado en otros lenguajes.

5# Community

En los últimos años Flutter ha crecido tanto en popularidad, merenciendose un puesto en el olimpo de los Framework para el desarrollo de cross platform. Esto ha favorecido el crecimiento de una comunidad cada vez más fuerte a su alrededor, que contribuye constantemente a la mejora del framework, haciendo muy fácil la resolución de problemas comunes.

6# MVP

Flutter puede ser un factor clave para todas las startup que tienen que crear un MVP.

Un MVP creado con Flutter es compatible con diferentes dispositivos, desde IOS hasta Android, para terminar en Escritorio y Web. Seguramente este es un factor atractivo para muchos inversores, pudiendo facilitarles en la búsqueda y prueba del proyecto de business creator. 

7# Google

El soporte a largo plazo de Google es una garantía de confiabilidad de Flutter en el futuro. El equipo a cargo de su mantenimiento está constantemente realizando mejoras al Framework. Estad siempre atentos al Roadmap oficial que encontrareis en este LINK.

Los contra de Flutter

Después de haber hablado de manera amplia de las funcionalidades positivas de Flutter, quisiera exponer también algunos de sus aspectos negativos.

Principalmente el Bundle Size de la aplicación final será seguramente mucho más grande respecto a la de una aplicación original. Por el momento una aplicación generada con Flutter pesa al menos 4.3mb en comparación con los 500kb de una aplicación original desarrollada con Java o Kotlin.

Además, siendo todavía en constante desarrollo, algunas funciones o bibliotecas podrían no estar disponibles o no ser compatibles. Como el soporte 3D, actualmente Flutter no es compatible con esta función; sin embargo, se anunció en el Roadmap futuro.

La popularidad de Flutter está en constante aumento y no se parará. Cada vez lo adoptan más empresas en sus propios proyectos. Y si el presente parece todavía React-native el futuro será seguramente Flutter. En el sitio oficial de Flutter es posible ver algunas de las Top Apps creadas por empresas del calibre de Alibaba, Google, Uber, eBay y Airbnb. 

Primeros pasos con Flutter

Para empezar con Flutter os aconsejo seguir detalladamente la documentación de este LINK, controlad bien los requisitos de vuestro ordenador. Los usuarios Windows tienen que tener PowerShell 5.0 y Git for Windows pre-instalados. Los usuarios Mac OS necesitan la versión 64-bit con Xcode 9.0 o uno más reciente, mientras los usuarios Linux tienen a disposición algunas command-line tools en su sistema operativo.

Además, gracias a la comunidad activa de este fantástico Framework, junto a la sección Learn de la doc.oficial, es posible aprender un montón de nociones, buscando en videos y artículos que os guiarán en el desarrollo de vuestra primera App.

Curso de programación Aulab Hackademy

Conviértete en Desarrollador weben 6 meses

Descubre el bootcamp de programación Hackademy

Programa Completo

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad