En 2017, Steve Jobs, presentó la joya de la corona de Apple al mundo: el iPhone. Y lo de joya de la corona no es una metáfora porque fue mostrado dentro de una urna de cristal.
Jobs no quería apps de terceros en el iPhone, pero su equipo lo convenció, diciéndole que si no lo hacía, lo haría un competidor. Así que al año siguiente, en abril de 2008, se lanzó la AppStore y pocos meses después, en septiembre, Google lanzó Android Market (hoy Google Play). El equipo de Steve Jobs tenía razón y comenzó la fiebre del desarrollo móvil.
Pero a diferencia de la web, en móvil necesitas diferentes tecnologías y lenguajes para Android y iOS, por lo que crear y mantener apps móviles (además de tu sitio web) era demasiado costoso. Para resolverlo, aparecieron soluciones multiplataforma como Phonegap, Córdova, Ionic o React Native, que prometían apps iOS y Android con una misma base de código (aunque con limitaciones de rendimiento).
Hasta que llegó Flutter y cambió las reglas del juego, logrando el verdadero desarrollo multiplataforma. Si quieres saber qué es Flutter y por qué es el futuro del desarrollo multiplataforma, este es el blog que necesitas. Incluso, hace 4 años, ya sabíamos que Flutter cambiaría el mundo. Recuerda que en español, nadie explica mejor que EDteam.
Dart
Flutter es un framework de Google que utiliza Dart, un lenguaje creado también por Google. Pero lo que quizás no sabías, es que Dart no fue creado para el desarrollo móvil, sino para la web, como reemplazo de JavaScript. Sí, otro que quiso matar a JavaScript y no pudo.
Google esperaba que Dart se convirtiera en un estándar para la web, así que incluyó su máquina virtual (la DartVM) en Chrome y abrieron su tecnología para que otras empresas lo usaran, pero nadie puede vencer a JavaScript (por eso TypeScript se unió a JS en lugar de competir con él).
Así que Dart quedó en el olvido, usado solo por algunos desarrolladores para proyectos independientes o experimentos, pero nada realmente relevante. Hasta que Flutter sacó a Dart de su retiro y lo convirtió en uno de los lenguajes más importantes.
Dart es un lenguaje orientado a objetos, inspirado en Java y en su última versión (la 2.18) es interoperable con Objective-C y Swift, por lo que podrías usarlo en tus proyectos para iOS, MacOS. Es un lenguaje optimizado para la creación de interfaces (UI) y compila para diferentes arquitecturas (ARM, x64, desktop, móvil, backend), incluso compila a JavaScript para usarlo en web.
Además, Dart tiene dos tipos de compilaciones: AOT (Ahead of time) y JIT (Just in Time). AOT es la compilación clásica, que significa compilar toda la aplicación antes de ejecutarla, mientras que JIT se parece más a un lenguaje interpretado, porque la compilación se hace por partes en el momento de la ejecución. Acuérdate de este dato, porque es muy importante para entender las ventajas de Flutter.
¿Qué es Flutter?
Flutter es un framework lanzado en 2017 por Google para el desarrollo de apps móviles multiplataforma nativas. Es decir, que aprovechan todo el rendimiento del sistema operativo, y que permiten escribir el código una sola vez y luego compilarlo para iOS y Android, en lugar de escribir dos aplicaciones separadas.
Flutter, gracias al lenguaje Dart, es capaz de compilarse directamente para la arquitectura y sistema operativo de destino (ARM o Intel). Esto hace que con Flutter puedas desarrollar aplicaciones para cualquier sistema como movil ,web, desktop (Windows, MacOS y Linux), sistemas embebidos e incluso, videojuegos.
Interfaces y widgets
La principal característica de Dart es que está especializado en la creación de interfaces a través de widgets, que son piezas de interfaz similares a los componentes de React o Angular en el desarrollo web, y que reaccionan a la interacción de los usuarios.
Pero Flutter va más allá, porque no usa un webview o una capa intermedia para renderizar la interfaz, sino que es capaz de controlar cada pixel de la interfaz con su propio motor de renderizado, que se comunica directamente con el sistema operativo. Gracias a esto, las aplicaciones de Flutter son fluidas a 60hz, sin saltos ni congelamientos, lo que permite también crear animaciones fluidas y sin cortes.
Este motor de renderizado es SKIA, es Open Source y está escrito en C++, aunque desde la versión 3 de Flutter, están desarrollando su propio motor llamado Impeller, que aún no está terminado pero promete muchas mejoras en rendimiento.
Además de esta ventaja en el rendimiento, hay otra ventaja para los desarrolladores y es que, al trabajar con Flutter, tienes una librería de Widgets listos para utilizar: botones, textos, navegación, inputs, entre otros. Así puedes desarrollar aplicaciones muy rápido. Flutter, además, incluye los estilos de Google y de iOS, por lo que tu aplicación, con un solo código, puede usar los estilos nativos de cada sistema operativo al compilarse, sin tener que escribirlos por separado.
Casos de éxito
Flutter es una tecnología relativamente joven (unos 5 años) pero con una comunidad grande, un desarrollo muy maduro y casos de éxito que lo respaldan como Alibaba, Google Pay, Toyota (que lo incluye en las pantallas de sus autos), Nubank, BMW, Tencent, Ebay o Bytedance (la empresa propietaria de TikTok).
Por lo tanto, Flutter es una excelente opción para convertirte en desarrollador móvil para Android y iOS, y lo puedes aprender en EDteam.
Desarrollo con Flutter
Una de las principales ventajas de desarrollar en Flutter es el Hot Reload, esto significa que los cambios que hagas en el código los verás automáticamente en la pantalla. Algo que es muy común en el desarrollo web, pero no así en el móvil, en el que hay que esperar a que se complete la compilación.
¿Recuerdas que te hablé de los dos tipos de compilación de Dart? Repasemos: La compilación AOT es la tradicional, que consiste en compilar toda la aplicación antes de poder usarla (o probarla), mientras que las JIT, es más parecida a un lenguaje interpretado porque se compila por partes, conforme se va ejecutando.
En Dart usamos la compilación JIT para desarrollar y ver los cambios con el Hot Reload y la compilación AOT para salir a producción. Lo mejor de los dos mundos.
Otra ventaja del desarrollo en Flutter son los widgets, que son piezas de interfaz reutilizables que pueden, a su vez, contener a otros widgets. Con lo cual, desarrollar en Flutter es ir combinando widgets como si fueran piezas de lego hasta construir toda la interfaz. Y si le sumas que al compilarse usan los componentes nativos del sistema operativo, es increíble.
Hablando de código, Dart es un lenguaje orientado a objetos por lo que los widgets son objetos. Veamos el siguiente widget que extiende a la clase StatelessWidget
.
1 2class MyWidget extends StatelessWidget { 3 @override 4 Widget build(BuildContext context) { 5 return const Text( 6 'Lo aprendiste en EDteam', 7 style: TextStyle( 8 color: Colors.black, 9 fontSize: 50 10 ) 11 ); 12 } 13}
La sintaxis es muy sencilla y fácil de entender. Además, fíjate el código a partir de la línea 7. ¿Qué clase de CSS es ese? Esa sintaxis declarativa de Flutter, es una gran ventaja (y algo que aman quienes desarrollan en Flutter) porque simplifica enormemente el desarrollo y te da control total de la interfaz.
Evolución de flutter
A pesar de ser una tecnología reciente, Flutter está muy maduro, y ya va por la versión 3. La versión 1 fue lanzada en diciembre de 2018 con los 4 principios base:
- Crear apps hermosas.
- Rápidas.
- Ser productivo con los desarrolladores ayudándoles a trabajar más rápido.
- Ser open source.
Además del desarrollo de apps móviles, en la versión 1 se presentó Hummingbird, una implementación para usar Flutter en web.
La versión 2 de Flutter fue lanzada en marzo de 2021, reforzando su objetivo de dejar de pensar en la plataforma y pensar más en la experiencia de usuario. Flutter resuelve la compilación a cualquier plataforma y le da a los desarrolladores todas las herramientas para crear una excelente UX. También se presentaron los proyectos de Google que confiaban en Flutter:
Esta versión incluyó soporte para sistemas embebidos, con Toyota usándolo en las pantallas de sus autos, soporte para pantallas plegables (con apoyo de Microsoft) y para apps de escritorio Linux (con apoyo de Canonical, los creadores de Ubuntu).
Flutter 3 fue lanzando en mayo de 2022, con compatibilidad 100% estable para escritorio Windows, Linux y MacOS (Intel y Apple Silicon). También se presentó su nuevo motor de renderizado Impeller, que reemplazará en el futuro a SKIA (que puede llegar a ser 20 veces más rápido) y soporte para material 3 de Google.
Como viste, Flutter no solo es una excelente opción para convertirte en desarrollador móvil, sino que es un total cambio de paradigma en la forma de desarrollar aplicaciones multiplataforma. Al día de hoy, Flutter es un proyecto estable y maduro y no una nueva tecnología de moda, así que si querías desarrollar apps móviles, vale mucho la pena probarlo.
Y si quieres aprenderlo, el mejor lugar es EDteam ¡y este es el momento perfecto porque comenzó la campaña navideña! Todo EDteam está a precio de Black Friday, por lo que podrás asegurar un 2023 lleno de éxitos hasta con 50% de descuento. Regálate educación esta Navidad o regálasela a tus seres queridos para que juntos, comiencen a construir un mejor futuro.
Y si no sabías que es Flutter y cómo funciona, lo aprendiste en EDteam.