dart, desarrollo movil, programming

Flutter. Nuevo framework multiplataforma

14101776

Recientemente Google nos ha sorprendido con el lanzamiento de un nuevo framework para realizar aplicaciones multiplataforma (iOS/Android) llamado Flutter.

El objetivo de este framework es poder realizar aplicaciones usando Dart, y que se ejecuten en nuestros teléfonos de manera nativa, y con un rendimiento equiparable a las aplicaciones desarrolladas con Java, Swift ó Objective-C que usan los SDKs oficiales.

Para ello, el equipo de flutter se ha alejado de otras aproximaciones que usan soluciones basadas en Javascript y HTML, creando una librería de componentes gráficos en C++ desde cero.

Cuando decimos que Flutter está hecho desde cero, nos referimos a que todos los componentes gráficos que conforman nuestra aplicación están renderizados directamente en OpenGL. Flutter, de esta manera, se aleja de otras aproximaciones como podría ser Xamarin o Cordova, donde se ofrece un acceso al SDK nativo del dispositivo a través de algún binding en otro lenguaje.

Como podéis imaginar, desarrollar un framework de componentes desde sus inicios es un tremendo trabajo, hay que desarrollar botones, menús, listas, un sistema de vistas, etc. Para ello Google ha echado mano de varias librerías que estaban utilizando en otras plataformas como Chromium, o Chrome OS. Por ejemplo, para el renderizado de los componentes usando OpenGL se ha usado Skia, Mojo para la parte de comunicación entre componentes o Blink para el renderizado de texto.

Junto con todos estos elementos, se encuentra la propia maquina virtual de Dart, que hará de enlace entre el propio framework de Flutter, y las librerías de más bajo nivel.

Hablando ya de la parte del framework que usaremos para crear las aplicaciones, Flutter opta por una aproximación inspirada en React. Como ya hemos visto en el framework publicado por Facebook, tendremos dos tipos de componentes, con estado y sin él, y que tendrán que implementar un método, (build() en Flutter o render() en React) que devolverá la apariencia del propio componente. En el caso de componentes con estado, tendremos que implementar el estado en forma de una subclase del propio framework pensada para contener un estado que puede cambiar a lo largo de la vida del componente.

Dentro del framework de Flutter se nos ofrece (y aconseja) la posibilidad de crear las aplicaciones siguiendo las directrices de Material Design. Nos encontraremos con clases específicas de este aproximación, como el botón de acción flotante, o la barra de menú típica de las aplicaciones desarrolladas usando Material.

Flutter está aún en sus primeros pasos, en una prueba rápida, el deploy en iOS no acaba de funcionar, la documentación es escasa, y la interacción con código desarrollado para la plataforma específica (usando Mojo) no parece funcionar, sin embargo parece una buena alternativa para crear aplicaciones que se desarrollen usando el mismo código en las dos grandes plataformas del mundo móvil. Desde el blog estaremos pendientes del desarrollo de este prometedor framework.