Publicado por Tim Sneath, administrador de grupos de productos para Flutter
Hoy, en Flutter Live, anunciamos Flutter 1.0, la primera versión estable del kit de herramientas de la IU de Google para crear experiencias nativas atractivas para iOS y Android a partir de un solo código base.

El desarrollo móvil multiplataforma actual está repleto de concesiones. Los desarrolladores se ven obligados a elegir entre crear la misma aplicación varias veces para los diferentes sistemas operativos o aceptar una solución que actúe como un mínimo denominador común en el que la velocidad nativa y la precisión se resignan por portabilidad. Con Flutter, consideramos que tenemos una solución que ofrece lo mejor de los dos mundos: IU y gráficos acelerados por hardware, con tecnología de código ARM nativo, orientados a los dos sistemas operativos móviles populares.

Presentación de Flutter

Flutter no reemplaza los modelos de aplicaciones de Apple y Android tradicionales para crear aplicaciones móviles, sino que es un motor de aplicaciones que puedes incorporar en una aplicación existente o usar para una aplicación completamente nueva.
Consideramos que las características de Flutter abarcan cuatro dimensiones:
  1. Flutter permite crear aplicaciones atractivas
. Queremos que los diseñadores puedan entregar toda su visión creativa sin estar obligados a rebajarla por limitaciones del marco de trabajo subyacente. Flutter te permite controlar cada píxel en pantalla y, gracias a sus potentes capacidades de composición, puedes superponer y animar gráficos, videos, texto y controles sin límites. Flutter incluye un conjunto completo de widgets que brindan experiencias de píxeles perfectos tanto en iOS como en Android. Además, permite la realización final de Material Design, el sistema de diseño abierto de Google para experiencias digitales.
  • Flutter es rápido
  • . Cuenta con el mismo motor de gráficos 2D acelerados por hardware Skia que respalda a Chrome y Android. Diseñamos Flutter para que admita gráficos libres de fallas y bloqueos a la velocidad nativa de tu dispositivo. El código de Flutter cuenta con tecnología de la plataforma de Dart de primer nivel, que permite la compilación en código ARM nativo de 32 y 64 bits para iOS y Android.
  • Flutter es productivo
  • . Flutter presenta la recarga con estado en caliente, una capacidad nueva y revolucionaria que permite a los desarrolladores y diseñadores móviles realizar iteraciones en sus aplicaciones en tiempo real. Con la recarga con estado en caliente, puedes realizar cambios en el código de tu aplicación y ver los resultados de manera instantánea sin reiniciar la aplicación ni perder su estado. La recarga con estado en caliente transforma la manera en que los desarrolladores crean las aplicaciones y, en las encuestas de usuarios, los desarrolladores afirman que hace que su ciclo de desarrollo sea el triple de productivo.
  • Por último, Flutter es abierto. Flutter es un proyecto de código abierto con licencia de tipo BSD e incluye contribuciones de cientos de desarrolladores de todo el mundo. A su vez, cuenta con un ecosistema dinámico de miles de complementos. Y, dado que todas las aplicaciones de Flutter son aplicaciones nativas que utilizan las herramientas de compilación estándares de iOS y Android, puedes acceder a todo desde el sistema operativo subyacente, incluidos código e IU escritos en Kotlin o Java en Android, y Swift o Objective-C en iOS.

  • Si unes esto y lo combinas con herramientas de primer nivel para Visual Studio Code, Android Studio, IntelliJ o el editor de programadores que prefieras, obtienes Flutter, un entorno de desarrollo para crear atractivas experiencias nativas para iOS o Android a partir de un solo código base.

    Crecimiento e impulso de Flutter

    Anunciamos la primera versión beta de Flutter en el congreso Mobile World Congress hace diez meses, y nos entusiasma ver lo rápido que lo adoptó la comunidad general, como lo demuestran las miles de aplicaciones de Flutter ya publicadas en las tiendas de Apple y Google Play, incluso antes de que lancemos la versión 1.0. Sin dudas, los desarrolladores están listos para un nuevo enfoque en el desarrollo de IU.
    De manera interna, Flutter se utiliza en Google para una amplia gama de productos, y Google Ads ya cambió a Flutter para su aplicación de iOS y Android. Incluso antes de la versión 1.0, un amplio rango de clientes globales, incluidos Abbey Road Studios, Alibaba, Capital One, Groupon, Hamilton, JD.com, Philips Hue, Reflectly y Tencent, están desarrollando o entregando aplicaciones con Flutter.
    Michael Jones, director principal de ingeniería del equipo de Capital One, dice lo siguiente sobre sus experiencias con Flutter:
    "Nos entusiasma el enfoque único de Flutter en el desarrollo multiplataforma de alto rendimiento. Nuestros ingenieros valoran la promesa de desarrollo rápido y las capacidades de recarga en caliente y, en el último año, vimos un enorme progreso en el marco de trabajo y, en especial, en la historia de integración nativa.
    Flutter permite a Capital One pensar en las características sin dar prioridad a iOS ni Android, sino con un verdadero modelo que priorice los dispositivos móviles. Nos complace ver a Flutter 1.0 y nos sigue asombrando el ritmo de los avances y el entusiasmo en la comunidad de ingenieros".
    En el evento de Flutter Live de hoy, el popular servicio de pagos Square anunció dos nuevos SDK de Flutter que facilitan la aceptación de pagos de bienes y servicios con Flutter, ya sea en persona con un lector de pago de Square o mediante pagos desde la aplicación móvil. Square mostró un ejemplo de cómo usar su SDK de pago con una aplicación de Collins Family Orchards, una granja familiar que cultiva y vende fruta en mercados agrícolas en el Noroeste del Pacífico.

    El desarrollador de la aplicación de Collins Family Orchards, Dean Papastrat, opinó lo siguiente sobre su experiencia:
    "Me sorprendió muchísimo la velocidad de todas las animaciones y las transiciones en las compilaciones de producción. Como desarrollador web, la transición a Flutter me resultó muy fácil, y no puedo creer que, en solo una semana, pude compilar una aplicación completamente funcional que acepta pagos".
    También en Flutter Live, 2Dimensions anunció la disponibilidad inmediata de Flare, una extraordinaria herramienta nueva para que los diseñadores creen animaciones vectoriales que pueden incorporarse directamente en la aplicación de Flutter y manipularse con código. Flare elimina la necesidad de diseñar en una aplicación, animar en otra y, luego, convertir todo esto en recursos y códigos específicos de un dispositivo.

    Las animaciones creadas con Flare pueden incorporarse en una aplicación de Flutter existente como un widget, lo que les permite participar en el compositor completo y superponerse con otras capas gráficas o de texto e, incluso, widgets de IU. Este tipo de integración libera las animaciones de las limitaciones de "caja negra" de otras arquitecturas y permite una colaboración continua entre diseñadores y desarrolladores hasta la finalización de la aplicación. Esta integración sólida entre Flutter y Flare proporciona una oferta atractiva única para los animadores y los diseñadores digitales que desean crear experiencias móviles bien terminadas.
    Otro socio que apostó por Flutter es Nevercode, un proveedor en rápido crecimiento de herramientas de integración continua y entrega (IC/EC) para aplicaciones móviles. En Flutter Live, presentó Codemagic, una herramienta nueva diseñada específicamente para que Flutter facilite la automatización del proceso de creación e integración de aplicaciones de Flutter tanto en Android como en iOS a partir de una sola automatización. Codemagic, que actualmente está disponible en versión beta, permite seleccionar un repositorio de GitHub que contenga un proyecto de Flutter y, con solo unos pocos clics, crear flujos de compilación continuos que realizan pruebas y generar conjuntos de aplicaciones binarias que se pueden subir a las tiendas de Apple y Google Play.
    Preparamos un video corto para destacar el rango y la variedad de las aplicaciones que los desarrolladores crearon con Flutter desde el lanzamiento de la versión beta:

    Características nuevas en Flutter 1.0

    Desde la primera versión beta, trabajamos para agregar características y optimización a Flutter. En especial, mejoramos nuestra compatibilidad para las apps para iOS de píxeles perfectos con widgets nuevos; agregamos compatibilidad para casi veinte servicios diferentes de Firebase y trabajamos para mejorar el rendimiento y disminuir el tamaño de las aplicaciones de Flutter. También solucionamos miles de problemas gracias a los comentarios de nuestra comunidad.
    Flutter también incluye la versión más reciente de la plataforma de Dart, 2.1, una actualización de Dart 2 que ofrece un tamaño menor de código, comprobaciones de tipo más rápidas y mejor usabilidad para errores de tipo. Asimismo, Dart 2.1 tiene nuevas funciones del lenguaje para mejorar la productividad al crear experiencias de usuario. Los desarrolladores que adoptaron Dart 2.1 nos comentan que ven mejoras significativas de velocidad solo con cambiar al motor más reciente:

    Si bien el foco principal de la versión 1.0 son las correcciones de errores y la estabilización, también agregamos adelantos de dos importantes características nuevas para que los desarrolladores las prueben en modo de revisión y que esperamos incluir en nuestro próximo lanzamiento trimestral de febrero de 2019: agregar a la aplicación y vistas de plataforma.

    Agregar a la aplicación

    Cuando empezamos a desarrollar Flutter, enfocamos nuestra productividad en la creación de una aplicación nueva desde cero. Pero, por supuesto, no todos tienen el lujo de poder empezar de cero. Al hablar con algunos de nuestros clientes más importantes, nos quedó claro que querían usar Flutter para nuevos recorridos de usuarios o características dentro de una aplicación existente, o convertir su aplicación existente para Flutter en etapas.
    La arquitectura de Flutter admite bien este modelo: después de todo, todas las aplicaciones de Flutter incluyen un contenedor host de iOS y Android. Pero estuvimos trabajando para facilitar la adopción incremental de Flutter mediante la actualización de nuestras plantillas, herramientas y orientación para las aplicaciones existentes. Asimismo, ahora compartir recursos entre Flutter y el código host es más fácil. También rediseñamos las herramientas para que sea más fácil adjuntar a un proceso de Flutter existente sin necesidad de iniciar el depurador con la aplicación.
    Continuaremos trabajando para que esta experiencia sea aún mejor. Si bien una gran cantidad de clientes ya están usando nuestra orientación sobre cómo agregar a la aplicación correctamente, continuaremos agregando ejemplos y expandiendo la compatibilidad para escenarios complejos. Mientras tanto, nuestras instrucciones para agregar Flutter a aplicaciones existentes están en nuestra wiki, y puedes registrar el trabajo restante en el tablero del proyecto en GitHub.

    Vistas de plataforma

    Si bien la característica de agregar a la aplicación es útil para incorporar Flutter de manera gradual en una aplicación existente, en ocasiones, resulta útil ir en la dirección contraria e incorporar un control de plataforma de Android o iPhone en una aplicación de Flutter.
    Es por eso que presentamos widgets de vista de plataforma (AndroidView y UiKitView) que te permiten incorporar este tipo de contenido en cada plataforma. Adelantamos la compatibilidad con Android durante algunos meses, pero ahora ampliamos la compatibilidad con iOS y comenzamos a agregar complementos como Google Maps y WebView que aprovechan esto.

    Al igual que otros componentes, nuestros widgets de vista de plataforma participan en el modelo de composición, lo que significa que puedes integrarlos con otro contenido de Flutter. Por ejemplo, en la captura de pantalla anterior, el botón de acción flotante en la esquina inferior derecha es un widget de Flutter que tiene el color de fondo con 50% alfa. Esto demuestra bien las ventajas arquitectónicas únicas de Flutter.
    Si bien este trabajo está listo para que los desarrolladores lo prueben, continuamos trabajando para mejorar el rendimiento y la compatibilidad de dispositivos, por lo que te recomendamos que tengas cuidado si implementas aplicaciones que dependan de las vistas de plataforma. Seguimos optimizando activamente las vistas de plataforma y esperamos que estén listas para la producción a tiempo para nuestra próxima actualización trimestral.

    Flutter más allá del desarrollo móvil

    Hasta ahora, el principal objetivo de Flutter fueron iOS y Android. Sin embargo, nuestras ambiciones para Flutter se extienden más allá del desarrollo móvil y abarcan un conjunto más amplio de plataformas. De hecho, desde el principio, Flutter se diseñó como un kit de herramientas portátil de la IU con la flexibilidad suficiente para ir donde sea que se pinten píxeles.
    Parte de este trabajo ya se realizó públicamente. Flutter Desktop Embedding es un proyecto en etapas tempranas que lleva Flutter a sistemas operativos de escritorio, incluidos Windows, MacOS y Linux. También publicamos recientemente detalles informales sobre cómo usar Flutter en Raspberry Pi, como una forma de demostrar la compatibilidad de la incorporación de Flutter en dispositivos de menor escala que pueden no incluir un entorno de escritorio completo.
    Esta semana, en Flutter Live, mostramos el primer adelanto de un proyecto experimental en el que estamos trabajando en los laboratorios que amplía significativamente dónde se puede ejecutar Flutter.

    Hummingbird es una implementación basada en la web del entorno de ejecución de Flutter que aprovecha la capacidad de la plataforma de Dart para compilar no solo en código ARM nativo sino también en JavaScript. Esto permite que el código de Flutter se ejecute en la web basada en estándares sin cambios.

    Tenemos un artículo de blog separado en Medium que describe los detalles de la implementación técnica de Hummingbird. Y tendremos mucho más para compartir en Hummingbird en Google I/O en 2019. ¡Esperamos verte allí!
    Por supuesto, el desarrollo móvil continúa siendo nuestra principal prioridad, y puedes esperar ver la mayor parte de nuestra inversión en estos escenarios móviles centrales en los próximos meses.

    Conclusión

    Con el lanzamiento de Flutter 1.0, establecimos un nuevo canal "estable", además de los canales Beta, para desarrolladores, y principal ya existentes. El canal estable se actualiza con menor frecuencia que los demás canales, pero tenemos mayor confianza en su calidad, ya que las versiones cuentan con la verificación de los otros canales. Esperamos actualizar nuestro canal estable con nuestras versiones más probadas trimestralmente.
    Puedes descargar Flutter 1.0 de nuestro sitio web, https://flutter.io, donde también encontrarás documentación para los desarrolladores que hagan la transición desde otro marco de trabajo, laboratorios de código, una guía de soluciones de ejemplos comunes y videos técnicos.
    Estamos especialmente agradecidos con los primeros usuarios que se unieron a nosotros en este recorrido hasta aquí, ofreciendo sugerencias, identificando problemas, creando contenido y dando forma al producto. La comunidad de Flutter es uno los mayores recursos que tenemos como proyecto: un grupo amable, diverso y útil de personas que se ofrecieron como voluntarios desinteresados porque también les interesa este proyecto de código abierto. ¡Gracias!

    Flutter está listo para ti. ¿Qué crearás?