¿Qué sigue para Flutter?

- Andrés Cruz

Hoy nos complace compartir nuestra visión de Flutter en Flutter Forward, nuestro evento para desarrolladores que se transmite en vivo desde Nairobi, Kenia, mientras desarrolladores de todo el mundo se reúnen en persona y en línea para conocer las direcciones futuras de Flutter.

Flutter es un conjunto de herramientas de interfaz de usuario que permite a los desarrolladores de aplicaciones crear para dispositivos móviles, web y de escritorio desde una única base de código. Flutter te permite crear hermosas aplicaciones, brindándote control total sobre cada píxel de la pantalla. Es rápido y aprovecha el hardware de su teléfono o computadora con soporte para gráficos acelerados por hardware y código de máquina compilado de forma nativa. Es productivo, con tecnologías como la recarga en caliente con estado que le permiten ver inmediatamente los cambios de código en su aplicación. Su portabilidad le permite implementar en una amplia variedad de plataformas con el mismo código fuente y sin sorpresas. Y es completamente de código abierto, sin costo para licenciarlo ni necesidad de pagar por herramientas para desarrollarlo.

Flutter ha demostrado ser popular, con más de 700.000 aplicaciones publicadas hasta la fecha: desde pequeñas empresas emergentes con grandes ideas hasta empresas con necesidades críticas. También en Google consideramos que Flutter es una herramienta valiosa que permite a equipos como Google Classroom ofrecer soluciones de alta calidad a usuarios web y móviles; También estamos agregando soporte en nuestras otras herramientas para desarrolladores, incluidas Google Ads, Google Maps, Google Pay y, por supuesto, Firebase.

"Con Flutter, reducimos el tamaño del código en un 66% para la misma funcionalidad... esto significa menos errores para cada plataforma y menos deuda tecnológica en el futuro". (Kenechi Ufondu, ingeniero de software, Google Classroom)

La primera versión de Flutter proporcionó un conjunto de herramientas de interfaz de usuario para crear aplicaciones móviles en Android e iOS, pero con Flutter 3, ampliamos el soporte de producción para incluir Windows, macOS, Linux y la web, al mismo tiempo que habilitamos plataformas integradas para usar Flutter. Sobre esta base, esta semana lanzamos nuestra última versión estable, Flutter 3.7, que agrega un amplio conjunto de características nuevas que incluyen un nuevo motor de renderizado en iOS, soporte mejorado para Material 3 y widgets estilo iOS, soporte renovado para internacionalización y procesamiento en segundo plano. mejoras y actualizaciones de las herramientas para desarrolladores.

Pero en este evento, estamos mirando hacia adelante y ofreciendo una vista previa de la próxima ola de inversiones que estamos haciendo en Flutter: rendimiento gráfico innovador, integración perfecta para web y dispositivos móviles, soporte temprano para arquitecturas nuevas y emergentes y un enfoque continuo. en la experiencia del desarrollador. Estamos mostrando el trabajo que se entregará gradualmente durante los próximos meses, y esperamos que esto lo deje entusiasmado con nuestra visión de Flutter como un poderoso conjunto de herramientas para cualquier desarrollador que quiera crear experiencias de usuario hermosas y de alta calidad que puedan ir a cualquier parte. Los píxeles están pintados.

Un descargo de responsabilidad: las características que estamos viendo aquí aún están en desarrollo y pueden cambiar significativamente en los próximos meses. Mostrarlos en esta etapa inicial está diseñado para brindarles a los primeros usuarios la oportunidad de contribuir.

Rendimiento gráfico innovador

Históricamente, los frameworks multiplataforma han requerido comprometer los elementos visuales, debido a los desafíos de crear una capa de abstracción. Flutter ha adoptado un enfoque diferente al de la mayoría, con su propia capa de renderizado que ofrece gráficos acelerados por hardware y una apariencia visual consistente en cada dispositivo. En el futuro, invertiremos en un rendimiento gráfico innovador que amplíe la fortaleza existente de Flutter en esta área.

En Flutter Forward, estamos mostrando más avances en Impeller, el motor de renderizado de próxima generación de Flutter. Impeller está optimizado para Flutter, lo que nos brinda aún más flexibilidad y control sobre el proceso de gráficos y nos abre nuevas oportunidades. Impeller proporciona un rendimiento más predecible, utilizando sombreadores precompilados que alivian la pérdida de fotogramas en tiempo de ejecución causada por la compilación de sombreadores. Aprovecha las primitivas de Metal y Vulkan, las API modernas de bajo nivel en iOS y Android. Y hace un uso eficaz de la concurrencia, distribuyendo cargas de trabajo de un solo cuadro entre subprocesos.

Además de ofrecer una interfaz de usuario fluida, Impeller puede mejorar drásticamente el rendimiento en ciertos escenarios. Una demostración (que se muestra a continuación) muestra el mejor ejemplo de esto. A la izquierda hay una aplicación de caleidoscopio que utiliza recorte SVG, creada con el renderizador predeterminado actual. Al desplazarse hacia abajo en la página, el rendimiento disminuye y el renderizado tarda más que el presupuesto por cuadro, lo que genera una velocidad de cuadros de 7 a 10 fps. El lado derecho muestra la misma aplicación ejecutándose bajo Impeller, renderizándose a 60 fps sin fallas.

Una ventaja de construir desde cero es que la arquitectura puede admitir casos de uso completamente nuevos. El soporte recientemente introducido para sombreadores personalizados ya está dando lugar a algunas demostraciones nuevas e increíbles que muestran una integración perfecta con la jerarquía de widgets de Flutter. Sin embargo, nuestro trabajo aquí no se limita a los dispositivos móviles: ahora también tenemos soporte temprano para sombreadores personalizados en la web, y el mismo código ahora impulsa experiencias aceleradas por hardware en iOS, Android y el navegador.

Y ahora estamos comenzando a trabajar en la compatibilidad con 3D con Flutter. Durante la conferencia magistral, mostramos que se pueden importar modelos creados con Blender e incluso usar la recarga en caliente para iterar con Blender en tiempo real y ver los resultados en una aplicación en ejecución. Aún es temprano, pero estamos entusiasmados con el rendimiento inicial que estamos obteniendo, junto con el potencial de integrar 3D en otras experiencias de Flutter.

Agregar sombreadores 3D y personalizados eleva el listón del rendimiento gráfico en un conjunto de herramientas de interfaz de usuario portátil a un nuevo nivel. Estamos muy emocionados de ver qué puede hacer con estas nuevas funciones a medida que estén disponibles.

Integración perfecta para web y dispositivos móviles

Si bien puedes escribir una aplicación completamente usando Flutter y Dart, casi cualquier proyecto no trivial necesita conectarse con otro código. En la web, Flutter se puede utilizar como un componente integrado dentro de una aplicación más grande; En dispositivos móviles, es posible que las aplicaciones necesiten llamar a las API del sistema u otro código escrito en otro idioma. Por lo tanto, nuestro segundo tema importante de inversión es la integración perfecta entre web y dispositivos móviles.

En la web, estamos mostrando una vista previa de una nueva función a la que llamamos incrustación de elementos, que permite agregar contenido de Flutter a cualquier <div> web estándar. Cuando se integra de esta manera, Flutter simplemente se convierte en un componente web, integrándose limpiamente con el DOM web e incluso permitiendo el uso de selectores y transformaciones CSS para diseñar el objeto Flutter principal.

También estamos realizando algunos cambios importantes en el paquete js para permitir una interoperabilidad perfecta entre JavaScript y el código Dart. Con js, puede anotar cualquier función en su código Dart con un atributo @JSExport y luego llamarla desde su código JavaScript.

La combinación de estas dos nuevas características abre algunos escenarios nuevos e interesantes para usar Flutter en la web. En una demostración de prueba de concepto que mostramos en Flutter Forward, puede ver una aplicación Flutter simple integrada en una página web basada en HTML. Usando CSS, aplicamos un efecto de rotación animado; Incluso mientras gira, el contenido de Flutter sigue siendo interactivo. La demostración también muestra que puede usar un botón HTML y un controlador de eventos de JavaScript para realizar cambios en el estado de Flutter y viceversa. Cuando este trabajo esté completo, creemos que se abrirán muchas oportunidades nuevas para usar Flutter para agregar interactividad a una aplicación web existente.

En cuanto a Android e iOS, Flutter ha apoyado durante mucho tiempo la integración con las API del sistema utilizando canales de plataforma, que ofrecen un enfoque basado en mensajes para comunicarse con código escrito en un lenguaje como Kotlin o Swift. Si bien esto desbloquea el acceso a esas bibliotecas, requiere que el autor de la aplicación domine varios idiomas y requiere una buena cantidad de código repetitivo.

Ahora estamos comenzando a trabajar en un nuevo enfoque para la interoperabilidad del sistema que permite llamar directamente a las bibliotecas. En iOS, estamos ampliando nuestro trabajo en FFI para la interoperabilidad de C, agregando soporte para las bibliotecas Swift y Objective-C. En Android, utilizamos JNI para conectar con las bibliotecas Jetpack escritas en Kotlin. Con un nuevo comando, Dart crea automáticamente enlaces para la interoperación entre idiomas y convierte las clases de datos de manera adecuada. Cuando esté completo, aspiramos a que este trabajo permita a un desarrollador de Flutter llamar a una nueva biblioteca Jetpack o iOS sin necesidad de usar un complemento o aprender una sintaxis API diferente, además de facilitar enormemente el trabajo para el autor de un complemento. ¡Consulte nuestra muestra para obtener más información!

Arquitecturas tempranas a nuevas y emergentes

Gracias al amplio soporte de Dart para una amplia gama de arquitecturas de procesador, así como a su compilador JavaScript altamente optimizado, Flutter ya puede ejecutarse en una amplia variedad de dispositivos y factores de forma. Pero con algunas opciones nuevas e interesantes en el horizonte, nuestro tercer tema es brindar soporte temprano a arquitecturas nuevas y emergentes.

WebAssembly ha ido ganando madurez como formato de instrucción binaria neutral para la plataforma, con un soporte cada vez mayor en los navegadores modernos. Curiosamente, WebAssembly abre la plataforma web a otros lenguajes además de JavaScript. En los últimos meses, hemos estado colaborando con el equipo de Chrome y otros socios de WebAssembly para agregar soporte temprano para lenguajes de recolección de basura como Dart. Esta nueva extensión de WebAssembly ahora es compatible con una bandera en las últimas versiones de desarrollo de Chrome. En Flutter Forward, presentaremos soporte temprano para la compilación de Flutter en WebAssembly, lo que permitirá mayores optimizaciones de velocidad y tamaño para nuestro soporte web.

Otra arquitectura de plataforma que está generando un interés creciente es RISC-V, una arquitectura de conjunto de instrucciones (ISA) de estándar abierto diseñada para un uso amplio. El equipo de Android recientemente dio una charla sobre su trabajo para soportar RISC-V, y estamos felices de anunciar también que Dart ahora soporta RISC-V, como parte de nuestro propio viaje para permitir que Flutter se ejecute en dispositivos RISC-V tal como volverse disponible. La producción de hardware RISC-V aún está en su infancia, pero en Flutter Forward demostramos nuestro progreso hasta la fecha en el ClockworkPi DevTerm Kit R-01, un terminal portátil autoensamblable que ejecuta Linux. Creemos que la compatibilidad con RISC-V será de particular interés para escenarios integrados, donde Flutter puede proporcionar un potente conjunto de herramientas de interfaz de usuario para un conjunto diverso de necesidades.

Enfoque continuo en la experiencia del desarrollador

La productividad de los desarrolladores es fundamental para todo lo que hemos descrito anteriormente, que ha sido un sello distintivo de Flutter desde sus inicios, con características como la recarga en caliente con estado. Nuestra cuarta y última área de inversión para el futuro es un enfoque continuo en la experiencia de los desarrolladores, tanto en Flutter como en Dart.

En Flutter Forward, estamos mostrando una vista previa de algunos de nuestros primeros trabajos en algunas características nuevas e importantes del lenguaje Dart que esperamos demuestren nuestro compromiso con la evolución elegante del lenguaje. En nuestro canal de desarrollo, ahora tenemos soporte temprano para registros y patrones, dos nuevas mejoras que funcionan particularmente bien juntas.

También anunciamos formalmente Dart 3, que es la culminación de nuestro trabajo para introducir seguridad nula en el lenguaje. Dart 3 también elimina otras funciones obsoletas desde hace mucho tiempo para modernizar aún más el lenguaje. Hemos comenzado a publicar compilaciones de calidad alfa de Dart 3, junto con compilaciones coincidentes de Flutter, lo que permite a los desarrolladores probar paquetes y aplicaciones. Para obtener más información sobre Dart 3, consulte la publicación de blog separada en el canal Dart.

Por supuesto, también estamos invirtiendo en la experiencia de desarrollador de Flutter. Tras el éxito del kit de herramientas de juegos casuales que anunciamos en I/O el año pasado, compartimos la primera versión de nuestro kit de herramientas de noticias, que acelera el desarrollo móvil para editores de noticias y otros proveedores de contenido que desean llegar a los usuarios móviles sin tener que diseñar una aplicación desde cero. Incluye todo lo que necesita para crear una aplicación centrada en artículos, con navegación y búsqueda, autenticación, integraciones de anuncios, notificaciones, perfiles y suscripciones, al tiempo que incorpora las mejores prácticas de la investigación de Google News Initiative. Hoy presentamos a tres de los primeros usuarios aquí en África que están creando aplicaciones basadas en este conjunto de herramientas, incluido Hespress, uno de los sitios de noticias más grandes de Marruecos, Bold Sports, un popular sitio de deportes nigeriano; y The Standard, el periódico más antiguo de Kenia.

 

Artículo original:

https://medium.com/flutter/whats-next-for-flutter-b94ce089f49c

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.