{"id":2176,"date":"2020-02-29T11:31:16","date_gmt":"2020-02-29T10:31:16","guid":{"rendered":"https:\/\/strattonapps.com\/?p=2176"},"modified":"2020-02-29T11:34:39","modified_gmt":"2020-02-29T10:34:39","slug":"flutter-future-2","status":"publish","type":"post","link":"https:\/\/strattonapps.com\/es\/mobile-development\/flutter\/flutter-future-2\/","title":{"rendered":"Flutter, presente y futuro del desarrollo m\u00f3vil multiplataforma #2"},"content":{"rendered":"<p>Este es el <strong>segunda y \u00faltima parte<\/strong>, de un art\u00edculo hecho para explicar por qu\u00e9 este gran marco podr\u00eda ser la mejor opci\u00f3n para el desarrollo m\u00f3vil. La decisi\u00f3n de dividir esta exposici\u00f3n en dos columnas diferentes fue profundizar el argumento sin confundir o aburrir al lector. Recuerdo que si no sabes ni siquiera un poco sobre Flutter, se recomienda leer primero <a href=\"https:\/\/strattonapps.com\/es\/mobile-development\/flutter\/flutter-essentials\/\" class=\"rank-math-link\">nuestro art\u00edculo sobre Flutter essentials<\/a> para que el mensaje llegue sin huecos. <\/p>\n\n\n\n<p><a href=\"https:\/\/strattonapps.com\/es\/mobile-development\/flutter\/flutter-future-1\/\" class=\"rank-math-link\">En el primer articulo<\/a> Examinamos las dos mejores ventajas de Flutter para el desarrollo m\u00f3vil front-end multiplataforma. Ahora, vamos con el tercero.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dise\u00f1o de aleteo<\/h2>\n\n\n\n<p>Como su nombre lo indica, <strong>dise\u00f1o establece el arreglo<\/strong>, el formato, la organizaci\u00f3n de los elementos. Configura las partes y las compone para construir algo que tenga sentido, como una plantilla. Entre otros, especifica la posici\u00f3n y el tama\u00f1o de cada pieza (en este caso, widgets) cumpliendo un conjunto de reglas (generalmente restricciones). Si est\u00e1 involucrado en el mundo del desarrollo de aplicaciones, ya sea web o m\u00f3vil, el dise\u00f1o le resultar\u00e1 familiar.<\/p>\n\n\n\n<p>Normalmente, la forma de hacer el dise\u00f1o es resolver <strong>muchas reglas estrictas y rigurosas que cubren todos los widgets<\/strong>, y esas reglas implementan algunos m\u00e9todos de dise\u00f1o. Eso es lo que sucede con CSS (en el desarrollo m\u00f3vil es lo mismo). Las propiedades CSS (reglas) se aplican a las etiquetas HTML (widgets o elementos).<\/p>\n\n\n\n<p>El uso de esas propiedades incluye cierto n\u00famero de modelos de dise\u00f1o (modelos de caja, tablas, columnas y m\u00e1s recientemente flexboxes y cuadr\u00edculas en CSS). sin embargo, el <strong>el desarrollador no puede crear o agregar nuevos modelos de dise\u00f1o<\/strong>, deben implementarse en el lenguaje y para todos los usuarios y desarrolladores (en todos los navegadores en CSS, como se hace con flexbox y grid).<\/p>\n\n\n\n<p>Adem\u00e1s, las reglas pueden interferir e incluso chocar entre s\u00ed, y como resultado los elementos generalmente tienen <strong>muchas reglas aplicadas<\/strong>, lo que hace que el dise\u00f1o sea lento. Tampoco ayuda que el rendimiento sea a menudo o (N ^ 2), lo que significa que como resultado de un incremento del n\u00famero de elementos, <strong>el rendimiento del dise\u00f1o disminuye<\/strong> a\u00fan m\u00e1s.<\/p>\n\n\n\n<p>En Google, encontraron que:<\/p>\n\n\n\n<ul><li>La mayor\u00eda del dise\u00f1o con frecuencia es relativamente <strong>simple y local a un sub\u00e1rbol de elemento<\/strong>, usando un modelo de dise\u00f1o (lo que significa reglas bajas necesarias para detectar el comportamiento)<\/li><li><strong>Dejando a un lado el modelo t\u00edpico de dise\u00f1o<\/strong> puede obtener ganancias de rendimiento relevantes<\/li><\/ul>\n\n\n\n<p>Entonces concluyeron que cambiar las ideas sobre el dise\u00f1o podr\u00eda ser m\u00e1s claro y simple:<\/p>\n\n\n\n<ul><li>Como alternativa a tener una gran cantidad de reglas de dise\u00f1o que se pueden aplicar a cualquier elemento, <strong>cada elemento especificar\u00eda su propio modelo de dise\u00f1o simple<\/strong>.<\/li><li>Como cada elemento tiene que considerar unas reglas de dise\u00f1o mucho m\u00e1s bajas, el dise\u00f1o ser\u00eda <strong>optimizado<\/strong>.<\/li><\/ul>\n\n\n\n<p>Y eso es lo que hicieron con los widgets de Flutter. De hecho, para simplificar a\u00fan m\u00e1s el dise\u00f1o, convirtieron casi todo en un widget.<\/p>\n\n\n\n<p><strong>En Flutter todo es un widget<\/strong>, el dise\u00f1o tambi\u00e9n. Usted puede <a href=\"https:\/\/flutter.dev\/docs\/development\/ui\/widgets\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">consulte el Cat\u00e1logo de widgets en el sitio web de documentos<\/a>. Como ejemplo, el widget de dise\u00f1o de fila organiza una lista de widgets (sus elementos secundarios) horizontalmente. El widget Alinear alinea a su hijo dentro de s\u00ed mismo y, opcionalmente, se ajusta seg\u00fan el tama\u00f1o del ni\u00f1o. As\u00ed de f\u00e1cil.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Fila (ni\u00f1os:  [Alinear (alineaci\u00f3n: Alignment.centerLeft, child: Padding (padding: EdgeInsets.all (8), child: Text (&quot;Hello World&quot;, style: TextStyle (fontSize: 30, fontStyle: FontStyle.italic, fontFamily: &quot;Roboto&quot; , color: Colors.blueGrey))),), Align (alineaci\u00f3n: Alignment.centerRight, child: Padding (padding: EdgeInsets.all (8), child: FlutterLogo ()),),],);<\/code><\/pre>\n\n\n\n<p>El relleno y el centrado son widgets. Los temas tambi\u00e9n son widgets, que se aplican a sus hijos. Las propiedades de estilo de texto son un widget llamado TextStyle (). E incluso las aplicaciones y la navegaci\u00f3n son widgets.<\/p>\n\n\n\n<p>Existen <strong>buenos pocos widgets de dise\u00f1o<\/strong>. Centros, columnas y filas, pilas, listas y cuadr\u00edculas ... Y un modelo de dise\u00f1o para hacer desplazamiento, el Modelo de dise\u00f1o de astilla, porque el dise\u00f1o es tan r\u00e1pido que puede usarse para desplazarse. No es una cosa menor, ya que el desplazamiento debe ser tan suave que el usuario no sepa que est\u00e1 renderizando cada vez. Al usar el dise\u00f1o para el desplazamiento, se pueden implementar tipos avanzados de desplazamiento en Flutter, como se muestra en las animaciones GIF a continuaci\u00f3n.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"618\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/1-W3iSBYaQcHFqYG_sGOv-A.gif\" alt=\"History of Everything app animations\" class=\"wp-image-2178\"\/><figcaption>Animaciones de History of Everything, la primera aplicaci\u00f3n Flutter de 2Dimensions<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"320\" height=\"648\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/1g5kTqAzL6FTJKnFictwJ5w.gif\" alt=\"Flutter Collapsing List\" class=\"wp-image-2179\"\/><figcaption>Lista de colapso de aleteo<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"600\" height=\"515\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/ezgif.com-crop2.gif\" alt=\"Flutter list with SliverAppBar\" class=\"wp-image-2190\"\/><figcaption>Lista con SliverAppBar<\/figcaption><\/figure><\/div>\n\n\n\n<p>Finalmente, es bastante notable que Flutter casi siempre pueda hacer <strong>dise\u00f1o en una sola pasada<\/strong>. Eso significa tiempo lineal u O (n) que implica la posibilidad de <strong>sosteniendo muchos widgets<\/strong>. De todos modos, Flutter tambi\u00e9n almacena en cach\u00e9 y otras cosas para evitar hacer el dise\u00f1o, cuando sea posible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dise\u00f1o a medida<\/h2>\n\n\n\n<p>Mover widgets y su representaci\u00f3n desde la plataforma a la aplicaci\u00f3n da como resultado <strong>f\u00e1cil personalizaci\u00f3n<\/strong> y la creaci\u00f3n de nuevos widgets, y los desarrolladores pueden dise\u00f1ar completamente seg\u00fan la marca de la compa\u00f1\u00eda. Es m\u00e1s <strong>flexible<\/strong>, en una palabra.<\/p>\n\n\n\n<p>Adem\u00e1s, Flutter implementa una amplia gama de <a href=\"https:\/\/material.io\/\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">Material Design<\/a> <strong>widgets a medida<\/strong> para Android y <a href=\"https:\/\/flutter.dev\/docs\/development\/ui\/widgets\/cupertino\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">iOS<\/a>, construido precisamente por la personalizaci\u00f3n que ofrece Flutter. Esos widgets emulan perfectamente los widgets OEM de m\u00faltiples plataformas nativas. <strong>Los desarrolladores pueden hacer lo mismo<\/strong> de acuerdo a sus necesidades y deseos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Manejo de \u00e1rboles<\/h2>\n\n\n\n<p>Si llegaste aqu\u00ed leyendo, sabr\u00e1s que tanto Flutter como React (React Native tambi\u00e9n) usan alg\u00fan tipo de <strong>\u00e1rbol de widgets<\/strong>. En vistas web reactivas, ese \u00e1rbol es el <strong>DOM virtual<\/strong>. DOM (Document Object Model) es la interfaz que trata un documento HTML como una estructura de \u00e1rbol en la que cada nodo representa una parte del documento, para que JavaScript pueda manipular estos nodos con su API. DOM virtual, en cambio, es una versi\u00f3n abstracta del DOM basada en <strong>objetos directamente en JavaScript<\/strong>.<\/p>\n\n\n\n<p>Las vistas web reactivas funcionan as\u00ed:<\/p>\n\n\n\n<ul><li>El DOM virtual, que es inmutable, es r<strong>construido cada vez<\/strong> todo cambia<\/li><li>El DOM virtual se contrasta con el DOM real para obtener el <strong>cambios m\u00ednimos<\/strong> necesario, y luego esos cambios se aplican al DOM real para actualizarlo<\/li><li>El verdadero DOM es <strong>re-renderizado y pintado<\/strong> en un lienzo<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/React.png\" alt=\"React tree managing\" class=\"wp-image-2181\" width=\"759\" height=\"367\" srcset=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/React.png 628w, https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/React-300x145.png 300w\" sizes=\"(max-width: 759px) 100vw, 759px\" \/><figcaption>Gesti\u00f3n de \u00e1rbol de reacci\u00f3n<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ahora puede estar pensando que parece est\u00fapido o un trabajo extra in\u00fatil, pero se hace as\u00ed porque <a href=\"https:\/\/www.codecademy.com\/articles\/react-virtual-dom\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">es muy costoso manipular el HTML o el DOM real<\/a>. <strong>React Native funciona de manera similar<\/strong>, pero en lugar de DOM y DOM virtual, manipula los widgets nativos de la plataforma m\u00f3vil y crea un \u00e1rbol virtual de widgets. Ese \u00e1rbol virtual de widgets est\u00e1 conectado a widgets nativos por el puente, manteniendo los datos pasados al m\u00ednimo.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"628\" height=\"304\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/react-native.png\" alt=\"React Native tree managing\" class=\"wp-image-2182\" srcset=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/react-native.png 628w, https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/react-native-300x145.png 300w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><figcaption>Reaccionar gesti\u00f3n de \u00e1rboles nativos<\/figcaption><\/figure><\/div>\n\n\n\n<p>\u00bfQu\u00e9 hay de Flutter? Como se dijo en la primera parte de este art\u00edculo, los widgets y el procesador se han trasladado de la plataforma a la aplicaci\u00f3n del usuario. Ese procedimiento implica que, aunque React Native fue una gran innovaci\u00f3n para el desarrollo m\u00f3vil (Flutter se ha inspirado en ello) <strong>Flutter ha ido m\u00e1s lejos<\/strong> y ha dado un paso mucho m\u00e1s grande.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"628\" height=\"304\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/flutter-uapo.png\" alt=\"Flutter tree managing\" class=\"wp-image-2183\" srcset=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/flutter-uapo.png 628w, https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/flutter-uapo-300x145.png 300w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><figcaption>Manejo del \u00e1rbol de aleteo<\/figcaption><\/figure><\/div>\n\n\n\n<p>No hay puente, ni \u00e1rbol de widgets virtuales, ni widgets nativos necesarios, y eso significa <strong>tres capas eliminadas de golpe<\/strong>. Aleteo <strong>simplemente representa su \u00e1rbol de widgets<\/strong> y representarlo en el lienzo de la plataforma, que es bastante r\u00e1pido. No m\u00e1s problemas de rendimiento de animaci\u00f3n y soluciones dif\u00edciles como las de React Native, porque se produce en el reino de Flutter. Adem\u00e1s, su renderizador es m\u00e1s original e innovador que el de React Native (y otros), repintando &quot;por widget&quot; solo aquellos que deben actualizarse y <strong>almacenamiento en cach\u00e9 de widgets sin cambios<\/strong>.<\/p>\n\n\n\n<p>Por \u00faltimo, resalte que Flutter es de c\u00f3digo abierto y <a href=\"https:\/\/github.com\/flutter\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">su repositorio est\u00e1 en GitHub<\/a>, para que pueda cambiar o modificar f\u00e1cilmente cada uno seg\u00fan sea necesario.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recarga en caliente<\/h2>\n\n\n\n<p>Adem\u00e1s de los widgets, el aleteo tambi\u00e9n se destaca por la recarga en caliente. Esta es una caracter\u00edstica r\u00e1pida que permite <strong>aplicar cambios a una aplicaci\u00f3n Flutter mientras se est\u00e1 ejecutando<\/strong>, recargando el c\u00f3digo sin alterar el estado de la aplicaci\u00f3n. Es tan r\u00e1pido que usualmente <strong>dura menos de un segundo<\/strong>, y si hay un error, puede corregir el error, volver a cargar en caliente y continuar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"787\" height=\"639\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/ezgif.com-gif-maker19.gif\" alt=\"Hot Reload behavior\" class=\"wp-image-2185\"\/><figcaption>Comportamiento de recarga en caliente<\/figcaption><\/figure>\n\n\n\n<p>El inconveniente aqu\u00ed es que hacer un <strong>recarga completa<\/strong>, aunque es r\u00e1pido en comparaci\u00f3n con otras tecnolog\u00edas, es <strong>m\u00e1s lento que las plataformas nativas<\/strong>, y especialmente en iOS, puede ser un poco molesto. A\u00fan as\u00ed, creo que las ventajas valen mucho m\u00e1s que este problema. Pintar instant\u00e1neamente su aplicaci\u00f3n despu\u00e9s de casi cada peque\u00f1o cambio es una caracter\u00edstica muy valiosa y citada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compatibilidad<\/h2>\n\n\n\n<p>Si est\u00e1 acostumbrado a codificar aplicaciones nativas de Android con Java o Kotlin, biblioteca <strong>problemas de compatibilidad<\/strong>, multidex, Android X, etc. ser\u00e1n conceptos que comprender\u00e1 y odiar\u00e1 de cierta manera. Con Flutter que la burocracia hace <strong>no existe<\/strong>. Dado que los widgets pertenecen a tu aplicaci\u00f3n y no a la plataforma, evitas estas cosas.<\/p>\n\n\n\n<p>Su proyecto funcionar\u00e1 perfectamente en Android desde Jelly Bean e iOS desde 8.0 en todas las versiones y dispositivos. <a href=\"about:blank\" class=\"rank-math-link\">No m\u00e1s bibliotecas compat<\/a>. Adem\u00e1s, las aplicaciones de prueba en versiones anteriores se reducir\u00e1n y <strong>su aplicaci\u00f3n funcionar\u00e1 en futuras versiones del sistema operativo<\/strong>. Sin embargo, si importa bibliotecas hechas en c\u00f3digo fuente con c\u00f3digo nativo, puede meterse en problemas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Actualizaci\u00f3n del marco<\/h2>\n\n\n\n<p>Una posible pregunta podr\u00eda ser qu\u00e9 sucede cuando se lanza una nueva versi\u00f3n de iOS y Android. Lo har\u00e1 <strong>los widgets Flutter tardan mucho en actualizarse<\/strong> si hay algunas caracter\u00edsticas nuevas, widgets nativos o cambios en un widget actual? Bueno, podr\u00eda ser, pero:<\/p>\n\n\n\n<ul><li>GRAMO<strong>oogle usa Flutter internamente<\/strong>, por lo que tienen incentivos para mantener actualizados los conjuntos de widgets y cerca de los widgets de la plataforma actual.<\/li><li>Google no es el \u00fanico usuario de Flutter con un incentivo para mantener actualizados los widgets. <strong>Cualquiera puede actualizar f\u00e1cilmente widgets<\/strong>, incluso t\u00fa.<\/li><li>En el caso de que no desee que el nuevo cambio se refleje en su aplicaci\u00f3n, est\u00e1 bien. Como los widgets son parte de su aplicaci\u00f3n, lo har\u00e1n <strong>nunca cambies debajo de ti<\/strong> y rompa su aplicaci\u00f3n o haga que su aplicaci\u00f3n se vea mal.<\/li><li>Y si eso no fuera suficiente, puede escribir su aplicaci\u00f3n y <strong>use el nuevo widget incluso en versiones anteriores del sistema operativo<\/strong>.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Paquetes<\/h2>\n\n\n\n<p>Antes de agregar caracter\u00edsticas nuevas y complejas a sus aplicaciones, <a href=\"https:\/\/pub.dev\/flutter\/packages\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">puedes consultar el repositorio de paquetes Flutter<\/a>. Desde herramientas y utilidades hasta implementaciones multimedia y de terceros servicios, probablemente encontrar\u00e1 <strong>algo \u00fatil para tu aplicaci\u00f3n<\/strong>. Tambi\u00e9n existen complementos para acceder f\u00e1cilmente a los servicios (c\u00e1mara, ubicaci\u00f3n, aceleraci\u00f3n, permisos).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fuente abierta<\/h2>\n\n\n\n<p>Como se mencion\u00f3 anteriormente, <a href=\"https:\/\/github.com\/flutter\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">fuente abierta<\/a> y el renderizado de aplicaciones hacen que Flutter sea personalizable para cada aplicaci\u00f3n individual. <strong>Casi todo es modificable<\/strong>, concretamente todo del motor Dart:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"726\" height=\"450\" src=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/dart-engine.png\" alt=\"Flutter Structure\" class=\"wp-image-2186\" srcset=\"https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/dart-engine.png 726w, https:\/\/strattonapps.com\/wp-content\/uploads\/2020\/02\/dart-engine-300x186.png 300w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><figcaption>Estructura de aleteo<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Cierre<\/h2>\n\n\n\n<p>Espero que estos dos art\u00edculos te aclaren por qu\u00e9 <strong>Flutter es una herramienta muy poderosa<\/strong> esa puede ser la herramienta dominante en el desarrollo m\u00f3vil y por qu\u00e9 <strong>lo usamos en aplicaciones Stratton<\/strong>. Pero si no, aqu\u00ed te dejamos un resumen de sus caracter\u00edsticas \u00fanicas:<\/p>\n\n\n\n<ul><li>Vistas reactivas, sin puente de JavaScript<\/li><li>R\u00e1pido, suave y predecible; el c\u00f3digo compila AOT al c\u00f3digo nativo (ARM)<\/li><li>Viene con widgets hermosos y personalizables<\/li><li>El desarrollador tiene control total sobre los widgets y el dise\u00f1o.<\/li><li>Excelentes herramientas para desarrolladores, con una incre\u00edble recarga en caliente<\/li><li>M\u00e1s rendimiento, m\u00e1s compatibilidad, paquetes<\/li><li>C\u00f3digo abierto y modificable<\/li><li>Aplicaciones r\u00e1pidas y hermosas para m\u00faltiples plataformas desde un \u00fanico c\u00f3digo f\u00e1cil<\/li><\/ul>\n\n\n\n<p>Si desea una aplicaci\u00f3n genial, original, r\u00e1pida y receptiva para m\u00faltiples plataformas, no dude en <a href=\"https:\/\/strattonapps.com\/es\/contact\/\" class=\"rank-math-link\">cont\u00e1ctenos en aplicaciones Stratton<\/a>. Nosotros <strong>construir\u00e1 de forma r\u00e1pida y econ\u00f3mica una soluci\u00f3n Flutter<\/strong> con soporte de fondo si es necesario.<\/p>","protected":false},"excerpt":{"rendered":"<p>Esta es la segunda y \u00faltima parte de un art\u00edculo elaborado para explicar por qu\u00e9 este gran marco podr\u00eda ser la mejor opci\u00f3n para el desarrollo m\u00f3vil. La decisi\u00f3n de dividir esta exposici\u00f3n en dos columnas diferentes fue profundizar el argumento sin confundir ni aburrir al lector. Recuerdo que si no lo sabes ni siquiera ... <a title=\"Flutter, presente y futuro del desarrollo m\u00f3vil multiplataforma #2\" class=\"read-more\" href=\"https:\/\/strattonapps.com\/es\/mobile-development\/flutter\/flutter-future-2\/\" aria-label=\"M\u00e1s en Flutter, presente y futuro del desarrollo m\u00f3vil multiplataforma #2\">Leer m\u00e1s<\/a><\/p>","protected":false},"author":3,"featured_media":2160,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[32,17],"tags":[37,40,26,39,44,41],"_links":{"self":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/posts\/2176"}],"collection":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/comments?post=2176"}],"version-history":[{"count":11,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/posts\/2176\/revisions"}],"predecessor-version":[{"id":2208,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/posts\/2176\/revisions\/2208"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/media\/2160"}],"wp:attachment":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/media?parent=2176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/categories?post=2176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/tags?post=2176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}