<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9110135141168689338</id><updated>2026-09-21T12:44:18.334-05:00</updated><category term="ubuntu"/><category term="linux"/><category term="Android"/><category term="GNU/Linux"/><category term="Gnome"/><category term="python"/><category term="ruby"/><category term="Dart"/><category term="Flutter"/><category term="firefox"/><category term="firefox 5"/><category term="mozilla"/><category term="php"/><category term="windows"/><category term="11.04"/><category term="Rails"/><category term="Synaptic"/><category term="Ubuntu tweak"/><category term="apache"/><category term="canonical"/><category term="comando linux"/><category term="google"/><category term="html5"/><category term="javascript"/><category term="mysql"/><category term="oneiric ocelot"/><category term="ubuntu 11.10"/><category term="videotutoriales"/><category term="11.10"/><category term="5.1"/><category term="Agentes IA"/><category term="Antigravity"/><category term="Barcelona"/><category term="Barcodes4J"/><category term="Cannonical"/><category term="Champions"/><category term="Champions league"/><category term="Dell"/><category term="Dell inspiron 1440"/><category term="EasyShutdown"/><category term="FCBarcelona"/><category term="Felíz día del padre"/><category term="Firebase"/><category term="GKaraoke"/><category term="GStreamer"/><category term="Gamers"/><category term="Gnome Mplayer"/><category term="Grandr"/><category term="Grub"/><category term="IA"/><category term="IBM"/><category term="IDE"/><category term="Inteligencia Artificial"/><category term="JRuby"/><category term="KDE"/><category term="Liga de Campeones"/><category term="Lotus"/><category term="Lucky Backup"/><category term="Mensajería"/><category term="Mplayer"/><category term="Natty Narwhal"/><category term="Ruby on Rails"/><category term="SMB"/><category term="Samba"/><category term="Smartphones"/><category term="Tablets"/><category term="Thunderbird"/><category term="Trucos Ubuntu"/><category term="Ubuntu Linux"/><category term="Vibe Coding"/><category term="Virtualbox"/><category term="Wordpress"/><category term="Xrandr"/><category term="aMSN"/><category term="angular"/><category term="apagar"/><category term="arranque"/><category term="aurora"/><category term="barcodes"/><category term="beryl"/><category term="bootstrap"/><category term="claws mail"/><category term="cliente"/><category term="cliente de correo"/><category term="coding"/><category term="compiz"/><category term="compiz fusion"/><category term="compizconfig"/><category term="convertir wma a mp3"/><category term="correo"/><category term="css"/><category term="danorcia"/><category term="django"/><category term="editor de texto"/><category term="evolution"/><category term="flash"/><category term="gdgcali"/><category term="gimp"/><category term="imagen"/><category term="ios"/><category term="joomla"/><category term="jquery"/><category term="juegos linux"/><category term="karmic"/><category term="kernel"/><category term="lampp"/><category term="linus torvalds"/><category term="mac"/><category term="make"/><category term="mashup"/><category term="metacity"/><category term="minix"/><category term="mitos"/><category term="mkdir"/><category term="navegador"/><category term="navegadores"/><category term="openoffice"/><category term="padre"/><category term="pidgin"/><category term="playonlinux"/><category term="programas"/><category term="pulseaudio"/><category term="resolución monitor"/><category term="rhythmbox"/><category term="skype"/><category term="sonido 5.1"/><category term="soundconverter"/><category term="sshdroid"/><category term="subwoofer"/><category term="symphony"/><category term="tarjeta de sonido"/><category term="ubuntu 11.04"/><category term="udemy"/><category term="vim"/><category term="wi-fi"/><category term="wifi"/><category term="xampp"/><category term="zimbra"/><title type='text'>Mi Mundo Ubuntu, Android, Inteligencia Artificial, web y más</title><subtitle type='html'>Todo sobre mis temas favoritos: Ubuntu, Linux, Desarrollo web, temas de inteligencia artificial y noticias informáticas.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-6838914506816394023</id><published>2026-01-23T22:14:00.002-05:00</published><updated>2026-01-23T22:19:07.015-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agentes IA"/><category scheme="http://www.blogger.com/atom/ns#" term="Antigravity"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="IA"/><category scheme="http://www.blogger.com/atom/ns#" term="Inteligencia Artificial"/><category scheme="http://www.blogger.com/atom/ns#" term="Vibe Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Todo Sobre el nuevo IDE de Google Antigravity</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana; font-size: medium;&quot;&gt;Antigravity: Revolucionando el Desarrollo con IA&lt;/span&gt;&lt;/h1&gt;&lt;p data-path-to-node=&quot;3&quot;&gt;&lt;span style=&quot;font-family: verdana; font-size: medium;&quot;&gt;En el vertiginoso mundo del desarrollo de software, la innovación es la clave para mantenerse a la vanguardia. Presentamos Antigravity, un entorno de desarrollo integrado (IDE) de próxima generación que está redefiniendo la forma en que los desarrolladores interactúan con su código. Impulsado por inteligencia artificial de vanguardia, Antigravity promete una experiencia de codificación más rápida, inteligente y eficiente.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;3&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhC3QtfZeMT5qg40p78EZuxRre1FHWDhJD-FsXe4Irn4qR62xC5_u6AnCv9A_r-OJ0jZ--_BtdmPYQ4NUjozHD6_KgDwz-49Q_w8Hyg-ssJjGs8tIhxrT15yY3izNDjBm7Frx40JCsG8x0KsXgW98LKn0ET2vMIHhNskphD3F6TiIzw0MNA4Fu2Rno5fz2j&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;552&quot; data-original-width=&quot;1000&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhC3QtfZeMT5qg40p78EZuxRre1FHWDhJD-FsXe4Irn4qR62xC5_u6AnCv9A_r-OJ0jZ--_BtdmPYQ4NUjozHD6_KgDwz-49Q_w8Hyg-ssJjGs8tIhxrT15yY3izNDjBm7Frx40JCsG8x0KsXgW98LKn0ET2vMIHhNskphD3F6TiIzw0MNA4Fu2Rno5fz2j=w448-h248&quot; width=&quot;448&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 data-path-to-node=&quot;4&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;¿Qué es Antigravity?&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;p data-path-to-node=&quot;5&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Antigravity es un IDE moderno diseñado desde cero para integrar capacidades de inteligencia artificial directamente en el flujo de trabajo del desarrollador. No es simplemente una herramienta de autocompletado avanzada; Antigravity aspira a ser un compañero de programación que entiende el contexto del código, anticipa las necesidades del desarrollador y automatiza tareas repetitivas, liberando a los ingenieros para que se concentren en la lógica y la creatividad.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;6&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;A diferencia de los IDE tradicionales, Antigravity utiliza modelos de IA para ofrecer:&lt;/span&gt;&lt;/p&gt;&lt;ul data-path-to-node=&quot;7&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;7,0,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,0&quot;&gt;Completado de código contextual:&lt;/b&gt; No solo predice la siguiente palabra, sino bloques de código completos basados en el patrón y la intención del desarrollador.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;7,1,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0&quot;&gt;Análisis inteligente de errores:&lt;/b&gt; Identifica posibles problemas antes de la compilación y sugiere soluciones proactivas.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;7,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0&quot;&gt;Refactorización asistida por IA:&lt;/b&gt; Propone mejoras en la estructura del código y automatiza refactorizaciones complejas.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;7,3,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,3,0&quot;&gt;Generación de código:&lt;/b&gt; Puede generar fragmentos de código, funciones o incluso pruebas unitarias basándose en descripciones en lenguaje natural.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node=&quot;8&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;¿Para qué sirve Antigravity?&lt;/span&gt;&lt;/h3&gt;&lt;p data-path-to-node=&quot;9&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Antigravity está diseñado para desarrolladores de todos los niveles, desde principiantes hasta expertos, en una amplia gama de lenguajes de programación. Su propósito principal es aumentar la productividad, reducir el tiempo de depuración y mejorar la calidad general del software. Sirve para:&lt;/span&gt;&lt;/p&gt;&lt;ul data-path-to-node=&quot;10&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;10,0,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;Acelerar el desarrollo:&lt;/b&gt; Al automatizar tareas tediosas y repetitivas, los desarrolladores pueden escribir código más rápido.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;10,1,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;Reducir errores:&lt;/b&gt; La IA detecta patrones de errores comunes y sugiere correcciones antes de que se conviertan en problemas mayores.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;10,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0&quot;&gt;Mejorar la calidad del código:&lt;/b&gt; Con sugerencias de refactorización y análisis de mejores prácticas, Antigravity ayuda a escribir código más limpio y mantenible.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;10,3,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,0&quot;&gt;Facilitar el aprendizaje:&lt;/b&gt; Los desarrolladores menos experimentados pueden aprender de las sugerencias de la IA y comprender mejor las estructuras y patrones de codificación.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;10,4,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,4,0&quot;&gt;Explorar nuevas ideas:&lt;/b&gt; Al encargarse de la escritura de código boilerplate, los desarrolladores tienen más tiempo para experimentar y ser innovadores.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node=&quot;11&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Bondades y Características Clave&lt;/span&gt;&lt;/h3&gt;&lt;p data-path-to-node=&quot;12&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Antigravity se distingue por una serie de características innovadoras que lo posicionan como un líder en el desarrollo asistido por IA:&lt;/span&gt;&lt;/p&gt;&lt;ul data-path-to-node=&quot;13&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;13,0,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;Inteligencia Contextual Profunda:&lt;/b&gt; Va más allá de las sugerencias básicas, entendiendo el propósito del código y el ecosistema del proyecto.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;13,1,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;Soporte Multi-lenguaje:&lt;/b&gt; Aunque la información específica de lenguajes no se detalla, los IDE modernos suelen ofrecer amplio soporte.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;13,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0&quot;&gt;Interfaz de Usuario Intuitiva:&lt;/b&gt; Un diseño limpio y moderno que minimiza las distracciones y facilita la navegación.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;13,3,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,0&quot;&gt;Integración con Herramientas de Desarrollo:&lt;/b&gt; Compatibilidad con sistemas de control de versiones, herramientas de testing y despliegue.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;13,4,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,0&quot;&gt;Personalización:&lt;/b&gt; Permite a los desarrolladores adaptar la experiencia del IDE a sus preferencias y flujos de trabajo específicos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;13,5,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,0&quot;&gt;Rendimiento Optimizado:&lt;/b&gt; Diseñado para ser rápido y eficiente, incluso con proyectos grandes y complejos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-path-to-node=&quot;14&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot; style=&quot;font-size: medium;&quot;&gt;Aquí tienes una vista previa de la interfaz, que muestra su diseño minimalista y centrado en el código.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;14&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjsOEfqJ2_Yxu6HKkT2FVBnCzDoxwa_zMEGhZG21NmvYhW3LtoxruB5dKW5EDQ-1-AUDTcm_5M6-8BI8h7btMAHFSHm-sHrisXl5lFkMThoC4eCzbOYvQ72tSs4Z7V_GifkVyxraWtImjPve2c67Rwfs4fzD30qf6-uc5EK67EMM0asao54-frTh_ui-fQv&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1665&quot; data-original-width=&quot;2560&quot; height=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjsOEfqJ2_Yxu6HKkT2FVBnCzDoxwa_zMEGhZG21NmvYhW3LtoxruB5dKW5EDQ-1-AUDTcm_5M6-8BI8h7btMAHFSHm-sHrisXl5lFkMThoC4eCzbOYvQ72tSs4Z7V_GifkVyxraWtImjPve2c67Rwfs4fzD30qf6-uc5EK67EMM0asao54-frTh_ui-fQv=w465-h302&quot; width=&quot;465&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 data-path-to-node=&quot;15&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Instalación de Antigravity&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;p data-path-to-node=&quot;16&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Antigravity está diseñado para ser multiplataforma, ofreciendo una experiencia de instalación sencilla en los principales sistemas operativos.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;17&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Requisitos del Sistema (Generales):&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;18&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Aunque la página no detalla requisitos mínimos específicos de hardware, se recomienda tener una máquina con recursos adecuados (CPU moderna, RAM suficiente, SSD) para aprovechar al máximo las capacidades de IA.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;19&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Instalación en Windows:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;ol data-path-to-node=&quot;20&quot; start=&quot;1&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;20,0,0&quot;&gt;&lt;span data-path-to-node=&quot;20,0,0,0&quot; style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0,0&quot;&gt;Descargar el instalador:&lt;/b&gt; Visita la página oficial de Antigravity (&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;link-block _nghost-ng-c2248666431=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;a _ngcontent-ng-c2248666431=&quot;&quot; _nghost-ng-c2943876168=&quot;&quot; class=&quot;ng-star-inserted&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQ_4QMahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQtQE&quot; decode-data-ved=&quot;1&quot; externallink=&quot;&quot; href=&quot;https://antigravity.google/&quot; jslog=&quot;197247;track:generic_click,impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]]&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://antigravity.google/&lt;/a&gt;&lt;!----&gt;&lt;/link-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;) y haz clic en el botón &quot;Download&quot; o navega a la sección de descargas. Selecciona la versión para Windows. Por lo general el sitio detecta qué sistema operativo está usando para así realizar la descarga de la versión correcta.&lt;/span&gt;&lt;span data-path-to-node=&quot;20,0,0,1&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;attachment-container generated-images&quot;&gt;&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;generated-image _nghost-ng-c3056067013=&quot;&quot; class=&quot;ng-star-inserted&quot; style=&quot;aspect-ratio: auto;&quot;&gt;&lt;div _ngcontent-ng-c3056067013=&quot;&quot; class=&quot;loader&quot;&gt;&lt;/div&gt;&lt;single-image _ngcontent-ng-c3056067013=&quot;&quot; _nghost-ng-c557207469=&quot;&quot; class=&quot;generated-image&quot; data-hveid=&quot;0&quot; data-image-attachment-index=&quot;1&quot; data-is-interactive=&quot;false&quot; data-ved=&quot;0CAAQiKwLahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQtgE&quot; decode-data-ved=&quot;1&quot; jslog=&quot;185864;track:generic_click,impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]];mutable:true&quot;&gt;&lt;div _ngcontent-ng-c557207469=&quot;&quot; class=&quot;image-container replace-fife-images-at-export ng-star-inserted&quot; replace-fife-images-at-export=&quot;&quot;&gt;&lt;div _ngcontent-ng-c557207469=&quot;&quot; class=&quot;overlay-container ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiFB3NWzdfzHMXoq68zZgtvViAFBSQm4HdAXf_CpTPOUtECoz6dQw8BOpGHn_nYzY36Uz_Y0RjTzx5abjiFmcGw2K7m82gsVG34fNYGgxGeUm7JnG9A73xReyN8urSPp6MXPLQ5I-iXEvwZhw4dW1gm0Pjk7MmXlBpeG5YOL5JQG32mEefkfYjO0ZtaUFoC&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;587&quot; data-original-width=&quot;1061&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiFB3NWzdfzHMXoq68zZgtvViAFBSQm4HdAXf_CpTPOUtECoz6dQw8BOpGHn_nYzY36Uz_Y0RjTzx5abjiFmcGw2K7m82gsVG34fNYGgxGeUm7JnG9A73xReyN8urSPp6MXPLQ5I-iXEvwZhw4dW1gm0Pjk7MmXlBpeG5YOL5JQG32mEefkfYjO0ZtaUFoC&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div _ngcontent-ng-c3056067013=&quot;&quot; class=&quot;generated-image-controls hide-from-message-actions ng-star-inserted&quot; hide-from-message-actions=&quot;&quot; overlay=&quot;&quot;&gt;&lt;download-generated-image-button _ngcontent-ng-c3056067013=&quot;&quot; _nghost-ng-c2923761684=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;button _ngcontent-ng-c2923761684=&quot;&quot; aria-describedby=&quot;cdk-describedby-message-ng-1-233&quot; aria-label=&quot;Descargar imagen a tamaño completo&quot; cdk-describedby-host=&quot;ng-1&quot; class=&quot;mdc-button mat-mdc-button-base mat-mdc-tooltip-trigger generated-image-button on-hover-button mat-mdc-button mat-unthemed ng-star-inserted&quot; data-test-id=&quot;download-generated-image-button&quot; jslog=&quot;185865;track:generic_click;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;]];mutable:true&quot; mat-button=&quot;&quot; mat-ripple-loader-class-name=&quot;mat-mdc-button-ripple&quot; mat-ripple-loader-uninitialized=&quot;&quot; mattooltip=&quot;Descargar en tamaño completo&quot;&gt;&lt;span class=&quot;mdc-button__label&quot;&gt;&lt;br /&gt;&lt;div _ngcontent-ng-c2923761684=&quot;&quot; class=&quot;button-icon-wrapper&quot;&gt;&lt;!----&gt;&lt;mat-icon _ngcontent-ng-c2923761684=&quot;&quot; aria-hidden=&quot;true&quot; class=&quot;mat-icon notranslate button-icon google-symbols mat-ligature-font mat-icon-no-color ng-star-inserted&quot; data-mat-icon-name=&quot;download&quot; data-mat-icon-type=&quot;font&quot; fonticon=&quot;download&quot; role=&quot;img&quot;&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class=&quot;mat-focus-indicator&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mat-mdc-button-touch-target&quot;&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;mat-menu _ngcontent-ng-c2923761684=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;/mat-menu&gt;&lt;!----&gt;&lt;/download-generated-image-button&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/single-image&gt;&lt;/generated-image&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;20,1,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;Ejecutar el instalador:&lt;/b&gt; Una vez descargado el archivo &lt;code data-index-in-node=&quot;54&quot; data-path-to-node=&quot;20,1,0&quot;&gt;.exe&lt;/code&gt;, haz doble clic sobre él para iniciar el proceso de instalación.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;20,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,2,0&quot;&gt;Seguir las instrucciones:&lt;/b&gt; El asistente de instalación te guiará a través de los pasos. Generalmente, deberás aceptar los términos de licencia, elegir la ubicación de instalación y seleccionar si deseas crear accesos directos.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;20,3,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,3,0&quot;&gt;Finalizar la instalación:&lt;/b&gt; Haz clic en &quot;Instalar&quot; y espera a que el proceso se complete. Una vez terminado, podrás iniciar Antigravity desde el menú Inicio o un acceso directo en el escritorio.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p data-path-to-node=&quot;21&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Instalación en Linux:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;ol data-path-to-node=&quot;22&quot; start=&quot;1&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;22,0,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span data-path-to-node=&quot;22,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0,0&quot;&gt;Descargar el paquete:&lt;/b&gt; Dirígete a la página de descargas de Antigravity (&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;link-block _nghost-ng-c2248666431=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;a _ngcontent-ng-c2248666431=&quot;&quot; _nghost-ng-c2943876168=&quot;&quot; class=&quot;ng-star-inserted&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQ_4QMahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQtwE&quot; decode-data-ved=&quot;1&quot; externallink=&quot;&quot; href=&quot;https://antigravity.google/&quot; jslog=&quot;197247;track:generic_click,impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]]&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://antigravity.google/&lt;/a&gt;&lt;!----&gt;&lt;/link-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;) y selecciona el paquete adecuado para tu distribución de Linux (por ejemplo, &lt;code data-index-in-node=&quot;178&quot; data-path-to-node=&quot;22,0,0,0&quot;&gt;.deb&lt;/code&gt; para Debian/Ubuntu o &lt;code data-index-in-node=&quot;204&quot; data-path-to-node=&quot;22,0,0,0&quot;&gt;.rpm&lt;/code&gt; para Fedora/CentOS).
`&lt;/span&gt;&lt;span data-path-to-node=&quot;22,0,0,1&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;attachment-container generated-images&quot;&gt;&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;generated-image _nghost-ng-c3056067013=&quot;&quot; class=&quot;ng-star-inserted&quot; style=&quot;aspect-ratio: auto;&quot;&gt;&lt;div _ngcontent-ng-c3056067013=&quot;&quot; class=&quot;loader&quot;&gt;&lt;/div&gt;&lt;single-image _ngcontent-ng-c3056067013=&quot;&quot; _nghost-ng-c557207469=&quot;&quot; class=&quot;generated-image&quot; data-hveid=&quot;0&quot; data-image-attachment-index=&quot;2&quot; data-is-interactive=&quot;false&quot; data-ved=&quot;0CAAQiKwLahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQuAE&quot; decode-data-ved=&quot;1&quot; jslog=&quot;185864;track:generic_click,impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]];mutable:true&quot;&gt;&lt;div _ngcontent-ng-c557207469=&quot;&quot; class=&quot;image-container replace-fife-images-at-export ng-star-inserted&quot; replace-fife-images-at-export=&quot;&quot;&gt;&lt;div _ngcontent-ng-c557207469=&quot;&quot; class=&quot;overlay-container ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;br /&gt;&lt;div _ngcontent-ng-c3056067013=&quot;&quot; class=&quot;generated-image-controls hide-from-message-actions ng-star-inserted&quot; hide-from-message-actions=&quot;&quot; overlay=&quot;&quot;&gt;&lt;download-generated-image-button _ngcontent-ng-c3056067013=&quot;&quot; _nghost-ng-c2923761684=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;button _ngcontent-ng-c2923761684=&quot;&quot; aria-describedby=&quot;cdk-describedby-message-ng-1-233&quot; aria-label=&quot;Descargar imagen a tamaño completo&quot; cdk-describedby-host=&quot;ng-1&quot; class=&quot;mdc-button mat-mdc-button-base mat-mdc-tooltip-trigger generated-image-button on-hover-button mat-mdc-button mat-unthemed ng-star-inserted&quot; data-test-id=&quot;download-generated-image-button&quot; jslog=&quot;185865;track:generic_click;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;]];mutable:true&quot; mat-button=&quot;&quot; mat-ripple-loader-class-name=&quot;mat-mdc-button-ripple&quot; mat-ripple-loader-uninitialized=&quot;&quot; mattooltip=&quot;Descargar en tamaño completo&quot;&gt;&lt;span class=&quot;mdc-button__label&quot;&gt;&lt;div _ngcontent-ng-c2923761684=&quot;&quot; class=&quot;button-icon-wrapper&quot;&gt;&lt;!----&gt;&lt;mat-icon _ngcontent-ng-c2923761684=&quot;&quot; aria-hidden=&quot;true&quot; class=&quot;mat-icon notranslate button-icon google-symbols mat-ligature-font mat-icon-no-color ng-star-inserted&quot; data-mat-icon-name=&quot;download&quot; data-mat-icon-type=&quot;font&quot; fonticon=&quot;download&quot; role=&quot;img&quot;&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class=&quot;mat-focus-indicator&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mat-mdc-button-touch-target&quot;&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;mat-menu _ngcontent-ng-c2923761684=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;/mat-menu&gt;&lt;!----&gt;&lt;/download-generated-image-button&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/single-image&gt;&lt;/generated-image&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/span&gt;&lt;/response-element&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;22,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Instalar el paquete:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;ul data-path-to-node=&quot;22,1,1&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;22,1,1,0,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,1,0,0&quot;&gt;Para &lt;code data-index-in-node=&quot;5&quot; data-path-to-node=&quot;22,1,1,0,0&quot;&gt;.deb&lt;/code&gt; (Debian/Ubuntu y derivados):&lt;/b&gt; Abre una terminal y navega hasta la carpeta donde descargaste el archivo. Luego, ejecuta:&lt;/span&gt;&lt;/p&gt;&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c1722847131=&quot;&quot; class=&quot;ng-tns-c1722847131-55 ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;code-block ng-tns-c1722847131-55 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQhtANahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQuQE&quot; decode-data-ved=&quot;1&quot; jslog=&quot;223238;track:impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]]&quot;&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;code-block-decoration header-formatted gds-title-s ng-tns-c1722847131-55 ng-star-inserted&quot;&gt;&lt;span _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;ng-tns-c1722847131-55&quot;&gt;Bash&lt;/span&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;buttons ng-tns-c1722847131-55 ng-star-inserted&quot;&gt;&lt;button _ngcontent-ng-c1722847131=&quot;&quot; aria-label=&quot;Copiar código&quot; class=&quot;mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c1722847131-55 mat-unthemed ng-star-inserted&quot; jslog=&quot;179062;track:generic_click,impression;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]];mutable:true&quot; mat-icon-button=&quot;&quot; mat-ripple-loader-centered=&quot;&quot; mat-ripple-loader-class-name=&quot;mat-mdc-button-ripple&quot; mat-ripple-loader-uninitialized=&quot;&quot; mattooltip=&quot;Copiar código&quot;&gt;&lt;span class=&quot;mat-mdc-button-persistent-ripple mdc-icon-button__ripple&quot;&gt;&lt;/span&gt;&lt;mat-icon _ngcontent-ng-c1722847131=&quot;&quot; aria-hidden=&quot;true&quot; class=&quot;mat-icon notranslate gds-icon-s google-symbols mat-ligature-font mat-icon-no-color&quot; data-mat-icon-name=&quot;content_copy&quot; data-mat-icon-type=&quot;font&quot; fonticon=&quot;content_copy&quot; role=&quot;img&quot;&gt;&lt;/mat-icon&gt;&lt;span class=&quot;mat-focus-indicator&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mat-mdc-button-touch-target&quot;&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;formatted-code-block-internal-container ng-tns-c1722847131-55&quot;&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;animated-opacity ng-tns-c1722847131-55&quot;&gt;&lt;pre _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;ng-tns-c1722847131-55&quot;&gt;&lt;code _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;code-container formatted ng-tns-c1722847131-55&quot; data-test-id=&quot;code-content&quot; role=&quot;text&quot;&gt;&lt;b&gt;sudo dpkg -i nombre_del_archivo.deb
sudo apt-get install -f &lt;span class=&quot;hljs-comment&quot;&gt;# Para resolver dependencias si es necesario&lt;/span&gt;&lt;/b&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/span&gt;&lt;/response-element&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;22,1,1,1,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,1,1,0&quot;&gt;Para &lt;code data-index-in-node=&quot;5&quot; data-path-to-node=&quot;22,1,1,1,0&quot;&gt;.rpm&lt;/code&gt; (Fedora/CentOS y derivados):&lt;/b&gt; Abre una terminal y navega hasta la carpeta donde descargaste el archivo. Luego, ejecuta:&lt;/span&gt;&lt;/p&gt;&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c1722847131=&quot;&quot; class=&quot;ng-tns-c1722847131-56 ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;code-block ng-tns-c1722847131-56 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQhtANahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQugE&quot; decode-data-ved=&quot;1&quot; jslog=&quot;223238;track:impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]]&quot;&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;code-block-decoration header-formatted gds-title-s ng-tns-c1722847131-56 ng-star-inserted&quot;&gt;&lt;span _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;ng-tns-c1722847131-56&quot;&gt;Bash&lt;/span&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;buttons ng-tns-c1722847131-56 ng-star-inserted&quot;&gt;&lt;button _ngcontent-ng-c1722847131=&quot;&quot; aria-label=&quot;Copiar código&quot; class=&quot;mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c1722847131-56 mat-unthemed ng-star-inserted&quot; jslog=&quot;179062;track:generic_click,impression;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]];mutable:true&quot; mat-icon-button=&quot;&quot; mat-ripple-loader-centered=&quot;&quot; mat-ripple-loader-class-name=&quot;mat-mdc-button-ripple&quot; mat-ripple-loader-uninitialized=&quot;&quot; mattooltip=&quot;Copiar código&quot;&gt;&lt;span class=&quot;mat-mdc-button-persistent-ripple mdc-icon-button__ripple&quot;&gt;&lt;/span&gt;&lt;mat-icon _ngcontent-ng-c1722847131=&quot;&quot; aria-hidden=&quot;true&quot; class=&quot;mat-icon notranslate gds-icon-s google-symbols mat-ligature-font mat-icon-no-color&quot; data-mat-icon-name=&quot;content_copy&quot; data-mat-icon-type=&quot;font&quot; fonticon=&quot;content_copy&quot; role=&quot;img&quot;&gt;&lt;/mat-icon&gt;&lt;span class=&quot;mat-focus-indicator&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mat-mdc-button-touch-target&quot;&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;formatted-code-block-internal-container ng-tns-c1722847131-56&quot;&gt;&lt;div _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;animated-opacity ng-tns-c1722847131-56&quot;&gt;&lt;pre _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;ng-tns-c1722847131-56&quot;&gt;&lt;code _ngcontent-ng-c1722847131=&quot;&quot; class=&quot;code-container formatted ng-tns-c1722847131-56&quot; data-test-id=&quot;code-content&quot; role=&quot;text&quot;&gt;&lt;b&gt;sudo rpm -i nombre_del_archivo.rpm&lt;/b&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/span&gt;&lt;/response-element&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;22,1,1,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;También puedes intentar instalarlo haciendo doble clic en el archivo descargado, lo que debería abrir tu gestor de paquetes predeterminado.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;22,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,2,0&quot;&gt;Iniciar Antigravity:&lt;/b&gt; Una vez instalado, podrás encontrar Antigravity en el menú de aplicaciones de tu entorno de escritorio.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p data-path-to-node=&quot;23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Instalación en macOS:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;ol data-path-to-node=&quot;24&quot; start=&quot;1&quot;&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;24,0,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span data-path-to-node=&quot;24,0,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0,0&quot;&gt;Descargar el archivo &lt;code data-index-in-node=&quot;21&quot; data-path-to-node=&quot;24,0,0,0&quot;&gt;.dmg&lt;/code&gt;:&lt;/b&gt; Visita la página oficial de Antigravity (&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;link-block _nghost-ng-c2248666431=&quot;&quot; class=&quot;ng-star-inserted&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;a _ngcontent-ng-c2248666431=&quot;&quot; _nghost-ng-c2943876168=&quot;&quot; class=&quot;ng-star-inserted&quot; data-hveid=&quot;0&quot; data-ved=&quot;0CAAQ_4QMahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQuwE&quot; decode-data-ved=&quot;1&quot; externallink=&quot;&quot; href=&quot;https://antigravity.google/&quot; jslog=&quot;197247;track:generic_click,impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]]&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://antigravity.google/&lt;/a&gt;&lt;!----&gt;&lt;/link-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;) y descarga la versión para macOS.
`&lt;/span&gt;&lt;span data-path-to-node=&quot;24,0,0,1&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;attachment-container generated-images&quot;&gt;&lt;response-element ng-version=&quot;0.0.0-PLACEHOLDER&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;generated-image _nghost-ng-c3056067013=&quot;&quot; class=&quot;ng-star-inserted&quot; style=&quot;aspect-ratio: auto;&quot;&gt;&lt;div _ngcontent-ng-c3056067013=&quot;&quot; class=&quot;loader&quot;&gt;&lt;/div&gt;&lt;single-image _ngcontent-ng-c3056067013=&quot;&quot; _nghost-ng-c557207469=&quot;&quot; class=&quot;generated-image&quot; data-hveid=&quot;0&quot; data-image-attachment-index=&quot;3&quot; data-is-interactive=&quot;false&quot; data-ved=&quot;0CAAQiKwLahgKEwjLmvHDjqOSAxUAAAAAHQAAAAAQvAE&quot; decode-data-ved=&quot;1&quot; jslog=&quot;185864;track:generic_click,impression,attention;BardVeMetadataKey:[[&amp;quot;r_4fcf696c4ff1d722&amp;quot;,&amp;quot;c_7379adb50c508599&amp;quot;,null,&amp;quot;rc_7c32b0551b69f740&amp;quot;,null,null,&amp;quot;es&amp;quot;,null,1,null,null,1,0]];mutable:true&quot;&gt;&lt;div _ngcontent-ng-c557207469=&quot;&quot; class=&quot;image-container replace-fife-images-at-export ng-star-inserted&quot; replace-fife-images-at-export=&quot;&quot;&gt;&lt;div _ngcontent-ng-c557207469=&quot;&quot; class=&quot;overlay-container ng-star-inserted&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;Montar la imagen de disco:&lt;/b&gt; Haz doble clic en el archivo &lt;code data-index-in-node=&quot;56&quot; data-path-to-node=&quot;24,1,0&quot;&gt;.dmg&lt;/code&gt; descargado. Esto montará una unidad virtual en tu escritorio.&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/single-image&gt;&lt;/generated-image&gt;&lt;/span&gt;&lt;/response-element&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;24,2,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,2,0&quot;&gt;Arrastrar a Aplicaciones:&lt;/b&gt; En la ventana que aparece, simplemente arrastra el icono de Antigravity a la carpeta &quot;Aplicaciones&quot;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;24,3,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,3,0&quot;&gt;Expulsar la imagen de disco:&lt;/b&gt; Una vez copiado, puedes expulsar la imagen de disco arrastrándola a la papelera o haciendo clic derecho y seleccionando &quot;Expulsar&quot;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node=&quot;24,4,0&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,4,0&quot;&gt;Iniciar Antigravity:&lt;/b&gt; Abre la carpeta &quot;Aplicaciones&quot; y haz doble clic en el icono de Antigravity para iniciar el IDE.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 data-path-to-node=&quot;25&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Conclusión&lt;/span&gt;&lt;/h3&gt;&lt;p data-path-to-node=&quot;26&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Antigravity representa un salto significativo en el desarrollo de software, aprovechando el poder de la inteligencia artificial para crear un IDE más inteligente, eficiente y colaborativo. Al integrar la IA directamente en el proceso de codificación, Antigravity no solo acelera la creación de software, sino que también eleva la calidad y la mantenibilidad del código. Es una herramienta que todo desarrollador que busque optimizar su flujo de trabajo debería considerar seriamente.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;26&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;En futuros videos les voy a explicar las características de este nuevo IDE y crearemos un proyecto paso a paso para crear un pequeño landing page utilizando agentes de IA.&lt;/span&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;26&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Hasta la próxima 🙌&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p data-path-to-node=&quot;14&quot;&gt;&lt;span data-path-to-node=&quot;14,0&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p data-path-to-node=&quot;3&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/6838914506816394023/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2026/01/todo-sobre-el-nuevo-ide-de-google.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6838914506816394023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6838914506816394023'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2026/01/todo-sobre-el-nuevo-ide-de-google.html' title='Todo Sobre el nuevo IDE de Google Antigravity'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhC3QtfZeMT5qg40p78EZuxRre1FHWDhJD-FsXe4Irn4qR62xC5_u6AnCv9A_r-OJ0jZ--_BtdmPYQ4NUjozHD6_KgDwz-49Q_w8Hyg-ssJjGs8tIhxrT15yY3izNDjBm7Frx40JCsG8x0KsXgW98LKn0ET2vMIHhNskphD3F6TiIzw0MNA4Fu2Rno5fz2j=s72-w448-h248-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-3181436433570958308</id><published>2019-09-16T14:37:00.003-05:00</published><updated>2019-09-16T14:37:56.954-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Dart"/><category scheme="http://www.blogger.com/atom/ns#" term="Flutter"/><category scheme="http://www.blogger.com/atom/ns#" term="IDE"/><title type='text'>Flutter — Atajos del IDE para Desarrollo Rápido</title><content type='html'>&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0212&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Fuente original:&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://medium.com/flutter-community/flutter-ide-shortcuts-for-faster-development-2ef45c51085b&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;https://medium.com/flutter-community/flutter-ide-shortcuts-for-faster-development-2ef45c51085b&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0952&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Créditos:&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://medium.com/@poojabhaumik&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Pooja Bhaumik&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/1000/1*vYKB7OgHPhuoVCFIASe7mQ.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;364&quot; data-original-width=&quot;800&quot; height=&quot;289&quot; src=&quot;https://miro.medium.com/max/1000/1*vYKB7OgHPhuoVCFIASe7mQ.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7f54&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Si eres nuevo en el desarrollo de Flutter, debes estar familiarizado con las estructuras anidadas, lo difícil que es agregar o eliminar widgets desde la mitad del código o lo difícil que es encontrar dónde termina un widget y comienza otro. Luego, pasa todo el día haciendo coincidir los corchetes de apertura con los de cierre, o al menos tratando de hacerlo. No estás solo, todos hemos estado allí. Nos llevó tiempo descubrir los atajos, pero tal vez no tengas que pasar por eso porque estoy a tu servicio; y he curado todos esos accesos directos que permiten un desarrollo más rápido y suave en Flutter.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9428&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;PS. Todos estos atajos trabajan para Android Studio e IntelliJ en Windows. Vienes de iOS? Tal vez&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://medium.com/coding-with-flutter/flutter-my-favourite-keyboard-shortcuts-63f6474afc8c&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;este artículo&lt;/a&gt;&amp;nbsp;te ayude.&lt;/span&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c69e&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Creando un nuevo widget Stateless o Stateful&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1363&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Adivine qué? No tienes que escribir manualmente tus widgets clases o sobreescribir las funciones build. El IDE puede hacerlo por tí.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;ca3c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Solo escriba&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;stless&lt;/code&gt;&amp;nbsp;para crear un Widget Stateless como esto:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;ca3c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;a href=&quot;https://miro.medium.com/max/748/1*Bd4-w3U4o8LMLUBeBvHjcQ.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;379&quot; data-original-width=&quot;748&quot; height=&quot;323&quot; src=&quot;https://miro.medium.com/max/748/1*Bd4-w3U4o8LMLUBeBvHjcQ.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.84); font-size: 21px; letter-spacing: -0.004em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 21px; letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; letter-spacing: -0.004em; padding: 2px 4px;&quot;&gt;stful&lt;/code&gt;&lt;span style=&quot;font-size: 21px; letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-size: 21px; letter-spacing: -0.004em;&quot;&gt;para crear un widget Stateful:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , &amp;quot;georgia&amp;quot; , &amp;quot;cambria&amp;quot; , &amp;quot;times new roman&amp;quot; , &amp;quot;times&amp;quot; , serif; font-size: 21px; letter-spacing: -0.004em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/748/1*iPbgo4kzGR573TWLObj0Vw.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;379&quot; data-original-width=&quot;748&quot; height=&quot;324&quot; src=&quot;https://miro.medium.com/max/748/1*iPbgo4kzGR573TWLObj0Vw.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , &amp;quot;georgia&amp;quot; , &amp;quot;cambria&amp;quot; , &amp;quot;times new roman&amp;quot; , &amp;quot;times&amp;quot; , serif; font-size: 21px; letter-spacing: -0.004em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;447c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Qué tal si ya creaste un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Stateless Widget&lt;/code&gt;&amp;nbsp;y añadido muchos hijos, pero luego se dió cuenta de que vá a necesitar un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;State&lt;/code&gt;&amp;nbsp;después de todo? Debería hacer un nuevo widget&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;StatefulWidget&lt;/code&gt;y luego manualmente transferir todo su código a el? No tienes que hacerlo!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;97dc&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Puedes sólo situar tu cursor en el&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;StatelessWidget&lt;/code&gt;, presionar&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Alt + Enter&lt;/code&gt;y hacer clic sobre&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Convert a StatefulWidget&lt;/code&gt;&amp;nbsp;. Todo el código será creado por ti, automáticamente.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;79de&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;¡Hurra!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;79de&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/748/1*3-si9s23wL_JJJ-n49N8Pw.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;506&quot; data-original-width=&quot;748&quot; height=&quot;432&quot; src=&quot;https://miro.medium.com/max/748/1*3-si9s23wL_JJJ-n49N8Pw.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;09ff&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Más cosas mágicas que puedes hacer con Alt+Enter&lt;/span&gt;&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;013d&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Alt + Enter&lt;/code&gt;es la varita mágica que puedes usar para desarrollo rápido en Flutter. Puedes hacer clic en cualquier&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;widget&lt;/code&gt;&amp;nbsp;, presionar&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Alt + Enter&lt;/code&gt;y ver qué opciones tienes para ese&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;widget&lt;/code&gt;&amp;nbsp;en particular. Por ejemplo:&lt;/span&gt;&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3dbb&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Añadir un Padding Alrededor de un Widget&lt;/span&gt;&lt;/h2&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;15ed&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Digamos que tienes un widget que no es un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Container,&lt;/code&gt;&amp;nbsp;por lo que no tiene una propiedad&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;padding&lt;/code&gt;. Quieres dar algo de padding pero tienes miedo de estropear tu estructura del widget. Con nuestra varita mágica, puedes añadir su&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Padding&lt;/code&gt;&amp;nbsp;sin estropear cualquier cosa:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;15ed&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/683/1*cF_n0NUu7NKKBDGPxqIrKw.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;433&quot; data-original-width=&quot;683&quot; height=&quot;404&quot; src=&quot;https://miro.medium.com/max/683/1*cF_n0NUu7NKKBDGPxqIrKw.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;15ed&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;Sólo presione&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; letter-spacing: -0.004em; padding: 2px 4px;&quot;&gt;Alt + Enter&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;sobre el widget que necesita un padding alrededor de el, y haga clic en&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; letter-spacing: -0.004em; padding: 2px 4px;&quot;&gt;Add Padding&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;Y ahora puedes modificar el padding por defecto para que sea lo que quieres.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d9a4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Centrar un Widget&lt;/span&gt;&lt;/h2&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;35b5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Esto no es algo muy extraordinario. Sólo centra tu widget en el espacio disponible. Esto no trabaja dentro de un&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;&amp;nbsp;Column o Row.&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;35b5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;&lt;br /&gt;&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/471/1*cclJ7ll1_79OrV4dB6A1TQ.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;178&quot; data-original-width=&quot;471&quot; height=&quot;150&quot; src=&quot;https://miro.medium.com/max/471/1*cclJ7ll1_79OrV4dB6A1TQ.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;35b5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-size: 26px; letter-spacing: -0.022em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Envolver con un Container, Column, Row o cualquier otro Widget&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: large;&quot;&gt;Puedes usar el mismo enfoque para envolver tu widget con un&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; letter-spacing: -0.004em; padding: 2px 4px;&quot;&gt;Container&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;. Y ahora, el nuevo&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; letter-spacing: -0.004em; padding: 2px 4px;&quot;&gt;Container&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;se convertirá en el padre de tu Widget.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f9a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/471/1*MXQqJ8dwxNFaUonY5Yameg.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;178&quot; data-original-width=&quot;471&quot; height=&quot;150&quot; src=&quot;https://miro.medium.com/max/471/1*MXQqJ8dwxNFaUonY5Yameg.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f9a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;O, incluso puedes envolver múltiples widgets con un&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; letter-spacing: -0.084px; padding: 2px 4px;&quot;&gt;Column&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&amp;nbsp;o&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; letter-spacing: -0.084px; padding: 2px 4px;&quot;&gt;Row&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&amp;nbsp;en sólo un clic!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f9a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/471/1*Jc2HCo2ubF0UpF3Y74yj_g.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;506&quot; data-original-width=&quot;471&quot; src=&quot;https://miro.medium.com/max/471/1*Jc2HCo2ubF0UpF3Y74yj_g.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f9a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;O envolverlos con cualquier otro widget:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f9a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/471/1*IabVETuRXabTjjme_gOLWQ.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;379&quot; data-original-width=&quot;471&quot; height=&quot;321&quot; src=&quot;https://miro.medium.com/max/471/1*IabVETuRXabTjjme_gOLWQ.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f9a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 26px; letter-spacing: -0.022em;&quot;&gt;No te gusta un widget? Remuévalo con la varita mágica.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;58d5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Si, remover un widget es tan fácil como añadir uno nuevo.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;58d5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/471/1*YLqU0N4YOFg-PE5xUlgzPw.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;379&quot; data-original-width=&quot;471&quot; height=&quot;257&quot; src=&quot;https://miro.medium.com/max/471/1*YLqU0N4YOFg-PE5xUlgzPw.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;58d5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 34px; letter-spacing: -0.022em;&quot;&gt;Ver el Código Fuente de Tu Widget&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1e6a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Esta es la mejor cosa acerca de un framework open source. Si quieres saber lo que hay detrás de escena de un widget asombroso una clase, entonces sólo colocas tu cursor sobre este y presionas&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Ctrl + B&lt;/code&gt;&amp;nbsp;. Este actuará como un enlace, llevándote directamente al código fuente de tu Widget donde puedes leer todo sobre él. Flutter también usa comentarios para explicar mucho de éste código, haciendo de gran documentación.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1e6a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/748/1*JHA37Fz0tYWwkcIVZllt2A.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;506&quot; data-original-width=&quot;748&quot; height=&quot;432&quot; src=&quot;https://miro.medium.com/max/748/1*JHA37Fz0tYWwkcIVZllt2A.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1e6a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 34px; letter-spacing: -0.022em;&quot;&gt;Comprueba las propiedades de un Widget sin dejar el archivo o pestaña&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5bc3&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Si deseas comprobar qué cosas asombrosas puedes hacer sin dejar tu archivo y profundizar en los documentos, sólo presione&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Ctrl+Shift+I&lt;/code&gt;&amp;nbsp;para obtener una vista rápida del constructor del widget.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5bc3&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/748/1*TnrFW-Slay3Xjw8nUdmr5g.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;432&quot; data-original-width=&quot;748&quot; height=&quot;230&quot; src=&quot;https://miro.medium.com/max/748/1*TnrFW-Slay3Xjw8nUdmr5g.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5bc3&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 34px; letter-spacing: -0.022em;&quot;&gt;Seleccionar rápidamente un Widget Entero&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;bd0a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Muchas veces necesitamos extraer/remover un widget entero e intentamos seleccionarlo manualmente:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;bd0a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/575/1*2bjnxO-X1AtYAWAe55UHxA.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;355&quot; data-original-width=&quot;575&quot; height=&quot;246&quot; src=&quot;https://miro.medium.com/max/575/1*2bjnxO-X1AtYAWAe55UHxA.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;bd0a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Si este es realmente un widget grande, entonces averígüe a qué corchete de cierre pertenece para cual puede ser bastante confuso y no queremos arruinar nuestra estructura entera.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;e3d0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;En momentos como estos, me gusta usar este atajo super útil.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;89f9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Sólo haga clic en el widget que quieres extraer y presione&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Ctrl+W.&amp;nbsp;&lt;/span&gt;El Widget entero es seleccionado por ti sin mover tu cursor una pulgada.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;89f9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/575/1*hXdrnbIxMZ8BLAowjRgjDg.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;355&quot; data-original-width=&quot;575&quot; height=&quot;246&quot; src=&quot;https://miro.medium.com/max/575/1*hXdrnbIxMZ8BLAowjRgjDg.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;249b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Repare la Estructura de Código&lt;/span&gt;&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d21f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Algunas veces tu código será un desastre. Algo así como esto:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d21f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/547/1*D9T0FtnkC27uw0W9UkP1IQ.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;508&quot; data-original-width=&quot;547&quot; height=&quot;593&quot; src=&quot;https://miro.medium.com/max/547/1*D9T0FtnkC27uw0W9UkP1IQ.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d21f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; letter-spacing: -0.004em;&quot;&gt;Para las personas como yo que tienen un poco de TOC al ver un código que no tiene una sangría adecuada, esto puede ser una pesadilla.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;deb4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Ahora, la mayoría de los IDEs tienen está habilidad, (aunque puede que no sea la misma combinación de teclas). Simplemente seleccione todo con&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Ctrl+A&lt;/code&gt;&amp;nbsp;y presione&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Ctrl+Alt+L&lt;/code&gt;&amp;nbsp;para reparar su sangría y reformatear el código.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;deb4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/683/1*jrrI0bf_AILrS6aVha66Yg.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;411&quot; data-original-width=&quot;683&quot; height=&quot;384&quot; src=&quot;https://miro.medium.com/max/683/1*jrrI0bf_AILrS6aVha66Yg.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a5dd&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Ver un esquema de su UI&lt;/span&gt;&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;cf3a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;La mayoría de nuestros Widgets no tienen sólo un hijo en su árbol. Ellos tienen arboles de hijos que tienen sus propios hijos y mucho mas. Si tu Widget tiene hijos anidados tan poco como cuatro de profundidad, entonces puede ser bastante difícil de entender la estructura del código con sólo desplazarse por él. Agradecidamente, tenemos&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Flutter Outline&lt;/code&gt;&amp;nbsp;para venir a nuestro rescate!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8ec1&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Puedes encontrar&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Flutter Outline&lt;/code&gt;&amp;nbsp;en el extremo derecho de tu IDE; este es una de las pestañas verticales y está localizado justo sobre el&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Flutter Inspector&lt;/code&gt;. Cuando lo abres, se ve así:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8ec1&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/649/1*fx0cH7wemc6z5s0GAItKxw.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;590&quot; data-original-width=&quot;649&quot; height=&quot;580&quot; src=&quot;https://miro.medium.com/max/649/1*fx0cH7wemc6z5s0GAItKxw.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8ec1&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; letter-spacing: -0.084px;&quot;&gt;Ahora, puede ver claramente cual Widget está en dónde, cómo están organizados dentro de la interfaz de usuario y qué widgets tienen otros widgets hijos. ¡Pan comido!&lt;/span&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3987&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Extraer código en un método&lt;/span&gt;&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d720&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Flutter Outline&lt;/code&gt;&amp;nbsp;es una herramienta bastante útil. Puedes hacer la mayorías de las cosas que hizo con&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Alt + Enter,&lt;/code&gt;&amp;nbsp;como envolver con un Column y Centrar un Widget, pero hay cosas aún más impresionantes disponibles en la pestaña&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Flutter Outline&lt;/code&gt;&amp;nbsp;! Uno de ellos es el botón&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Extract Method&lt;/code&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d720&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/360/1*lv-dWCrkV-fhTmjoa-0a5g.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;118&quot; data-original-width=&quot;360&quot; height=&quot;104&quot; src=&quot;https://miro.medium.com/max/360/1*lv-dWCrkV-fhTmjoa-0a5g.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;d720&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Si sientes que estás escribiendo un Widget que se está volviendo demasiado largo y probablemente debería ser un Widget personalizado, entonces, en lugar de cambiar manualmente el código a un método, ¡puedes usar esta herramienta para hacer la magia por ti!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7be0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 2em 0px -0.46em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/856/1*52lSvvqUhDg6jawI-8ktig.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;502&quot; data-original-width=&quot;800&quot; height=&quot;400&quot; src=&quot;https://miro.medium.com/max/856/1*52lSvvqUhDg6jawI-8ktig.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c65a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Mover un Widget Arriba y Abajo&lt;/span&gt;&lt;/h1&gt;
&lt;div style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: large;&quot;&gt;Otra cosa loca que puedes hacer con&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; letter-spacing: -0.004em; padding: 2px 4px;&quot;&gt;Flutter Outline&lt;/code&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: -0.004em;&quot;&gt;es si tienes múltiples hijos en un widget, puedes fácilmente reacomodar su orden:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a0ca&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/856/1*bIStl0Tj5xu1yb2XfFQiug.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;371&quot; data-original-width=&quot;800&quot; height=&quot;296&quot; src=&quot;https://miro.medium.com/max/856/1*bIStl0Tj5xu1yb2XfFQiug.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a0ca&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin: 0.86em 0px -0.46em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 34px; letter-spacing: -0.022em;&quot;&gt;Refactorizar Renombrar&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;89e0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Esta es una herramienta bastante básica que la mayoría de los IDE tienen. Este te permite renombrar un método, widget, clase o nombre de archivo y se asegura que las referencias a el también se renombren. Sólo use&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Shift + F6&lt;/code&gt;&amp;nbsp;y escriba el nuevo nombre:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;89e0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/476/1*EtZ2UG1HJart7DeqqZxnIg.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;435&quot; data-original-width=&quot;476&quot; height=&quot;584&quot; src=&quot;https://miro.medium.com/max/476/1*EtZ2UG1HJart7DeqqZxnIg.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;89e0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 34px; letter-spacing: -0.022em;&quot;&gt;Remover Imports sin usar&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b613&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Así que estás trabajando en un proyecto e importas muchos archivos, pero con el tiempo tu código se optimiza más y más. Eventualmente, es posible que ya no necesite muchas de esas importaciones. Ahora está listo para llevar su código a producción, pero necesita limpiarlo y eliminar todas las importaciones no utilizadas. Tal vez normalmente los elimines manualmente, pero como estoy aquí para hacerte la vida más fácil, aquí tienes una combinación de teclado bastante bonita:&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Ctrl+Alt+O&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b613&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/748/1*jkUKOBAXVZfqKiHjFfVWRg.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;106&quot; data-original-width=&quot;748&quot; height=&quot;90&quot; src=&quot;https://miro.medium.com/max/748/1*jkUKOBAXVZfqKiHjFfVWRg.gif&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b613&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b613&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: &amp;quot;verdana&amp;quot; , sans-serif; font-size: 21px; letter-spacing: -0.084px;&quot;&gt;Esos son todos los atajos que conozco por ahora. ¡Asegúrate de revisar a menudo para obtener más consejos, trucos y otras cosas geniales!&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;blockquote class=&quot;ym&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin: 0px; padding-left: 30px;&quot;&gt;
&lt;div class=&quot;yn yo yp ba km b ro yq yr ys yt yu lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;02d5&quot; style=&quot;box-sizing: inherit; color: rgba(0, 0, 0, 0.76); font-size: 24px; letter-spacing: -0.014em; line-height: 1.48; margin-bottom: -0.46em; margin-top: 2.75em;&quot;&gt;
&lt;div class=&quot;km b yv yw be&quot; style=&quot;box-sizing: inherit; color: rgba(0, 0, 0, 0.54); font-size: 30px; line-height: 44px;&quot;&gt;
¿Me perdí un atajo fabuloso para salvar vidas? ¡Comenta abajo!&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;lc ld ct ba le b lf yx lh yy lj yz ll za ln zb lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;791b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 3.14em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Comunidad Flutter Dart en&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://www.facebook.com/groups/flutter.dart.spanish&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Español&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;afb1&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Grupo Telegram de Flutter Dart: @flutter_dart_spanish&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b613&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;fafd&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;verdana&amp;quot; , sans-serif;&quot;&gt;Mi cuenta en twitter: @unAndroidMas&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/3181436433570958308/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2019/09/flutter-atajos-del-ide-para-desarrollo.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3181436433570958308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3181436433570958308'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2019/09/flutter-atajos-del-ide-para-desarrollo.html' title='Flutter — Atajos del IDE para Desarrollo Rápido'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-8674166025248757853</id><published>2019-09-16T14:37:00.000-05:00</published><updated>2019-09-16T14:37:01.463-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Dart"/><category scheme="http://www.blogger.com/atom/ns#" term="Flutter"/><title type='text'>Shared Preferences: ¿Cómo guardar la configuración de la aplicación Flutter y las preferencias del usuario para su posterior reutilización?</title><content type='html'>&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b0bc&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
El articulo original en inglés es de Didier Boelens y lo encuentras&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://www.didierboelens.com/2018/04/shared-preferences---how-to-save-flutter-application-settings-and-user-preferences-for-later-re-use/&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a139&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Este articulo describe las nociones de Shared Preferences que le permite a las aplicaciones Flutter (Android o iOS) guardar configuraciones, propiedades y datos en la forma de pares clave-valor, el cual serán persistentes incluso cuando el usuario cierra la aplicación.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2e62&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Los Shared Preferences son almacenados en formato XML.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;188b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Shared Preferences es específica de la aplicación, es decir, los datos se pierden al realizar una de las siguientes opciones:&lt;/div&gt;
&lt;ul class=&quot;&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.8); list-style: none none; margin: 0px; padding: 0px;&quot;&gt;
&lt;li class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp vo vp vq&quot; data-selectable-paragraph=&quot;&quot; id=&quot;bb9a&quot; style=&quot;box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 2em; padding-left: 0px;&quot;&gt;Al desinstalar la aplicación.&lt;/li&gt;
&lt;li class=&quot;lc ld ct ba le b lf vr lh vs lj vt ll vu ln vv lp vo vp vq&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1c9b&quot; style=&quot;box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; list-style-type: disc; margin-bottom: -0.46em; margin-left: 30px; margin-top: 1.05em; padding-left: 0px;&quot;&gt;Al limpiar los datos de la aplicación.&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.83921568627451); font-family: , &amp;quot;georgia&amp;quot; , &amp;quot;cambria&amp;quot; , &amp;quot;times new roman&amp;quot; , &amp;quot;times&amp;quot; , serif;&quot;&gt;&lt;span style=&quot;font-size: 21px; letter-spacing: -0.084px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;00a9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span class=&quot;cd&quot; style=&quot;box-sizing: inherit; font-weight: inherit;&quot;&gt;Uso Principal&lt;/span&gt;&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;edb1&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
El uso principal de&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Shared Preferences&lt;/em&gt;&amp;nbsp;es guardar las preferencias de los usuarios, configuraciones, tal vez datos (si no es muy grande) para que la próxima vez que la aplicación sea lanzada, estas piezas de información podrían ser recibidas y usadas.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3558&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Visión general de la API&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;bf4f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
La documentación completa puede ser encontrada en el&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://pub.dartlang.org/packages/shared_preferences&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Repositorio de paquetes de Flutter&lt;/a&gt;.&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;70b3&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
1. Getters&lt;/h2&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a699&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Set &amp;lt; String &amp;gt; getKeys()&lt;/em&gt;&amp;nbsp;Retorna todas las claves.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;da9d&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;dynamic get(String key)&lt;/em&gt;&amp;nbsp;Retorna el valor, asociado con la correspondiente clave.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c667&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;bool getBool(String key)&lt;/em&gt;&amp;nbsp;Retorna el valor boolean, asociado con la correspondiente clave. Si el valor no es un boolean, lanza una excepción.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;583c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;int getInt(String key)&lt;/em&gt;&amp;nbsp;Retorna el valor integer, asociado con la correspondiente clave. Si el valor no es un integer, lanza una excepción.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0160&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;double getDouble(String key)&lt;/em&gt;&amp;nbsp;Retorna el valor double, asociado con la correspondiente clave. Si el valor no es un double, lanza una excepción.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;329a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;String getString(String key)&lt;/em&gt;&amp;nbsp;Retorna el valor string, asociado con la correspondiente clave. Si el valor no es un string, lanza una excepción.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a6a9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;List getStringList(String key)&lt;/em&gt;&amp;nbsp;Retorna un conjunto de valores string, asociado con la correspondiente clave. Si el valor no es un conjunto de valores string, lanza una excepción.&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;052c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
2. Setters&lt;/h2&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;cf5c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; setBool(String key, bool value)&lt;/em&gt;&amp;nbsp;Guarda un valor boolean y asociado con la clave.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;87e8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; setInt(String key, int value)&lt;/em&gt;&amp;nbsp;Guarda un valor integer y asociado con la clave.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;91e8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; setDouble(String key, double value)&lt;/em&gt;&amp;nbsp;Guarda un valor double y asociado con la clave.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6f05&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; setString(String key, String value)&lt;/em&gt;&amp;nbsp;Guarda un valor string y asociado con la clave.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;e39a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; setStringList(String key, List value)&lt;/em&gt;&amp;nbsp;Guarda una lista de valores string y asociado con la clave.&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;26c6&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
3. Removal&lt;/h2&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;db1d&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; remove(String key)&lt;/em&gt;&amp;nbsp;Remueve los pares-clave asociados con la clave.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;4f91&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
También, en cualquier setter, el hecho de pasar un valor nulo, corresponde a llamar a eliminar (clave).&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;78f0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Future &amp;lt; bool &amp;gt; clear async&lt;/em&gt;&amp;nbsp;Remueve todos los pares-clave enlazados al paquete de la aplicación.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a24c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
&lt;span class=&quot;cd&quot; style=&quot;box-sizing: inherit; font-weight: inherit;&quot;&gt;Cómo usarlo?&lt;/span&gt;&lt;/h1&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2bde&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
pubspec.yaml&lt;/h2&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8d63&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
En el archivo&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;pubspec.yaml&lt;/span&gt;, añada el&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;shared_preferences&lt;/em&gt;&amp;nbsp;a la lista de dependencias, como sigue:&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8d63&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/338/1*BKovpU2mzDFhD1JrRLNjOw.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;297&quot; data-original-width=&quot;338&quot; height=&quot;281&quot; src=&quot;https://miro.medium.com/max/338/1*BKovpU2mzDFhD1JrRLNjOw.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , &amp;quot;lucida grande&amp;quot; , &amp;quot;lucida sans unicode&amp;quot; , &amp;quot;lucida sans&amp;quot; , &amp;quot;geneva&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 34px; font-weight: inherit; letter-spacing: -0.022em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , &amp;quot;lucida grande&amp;quot; , &amp;quot;lucida sans unicode&amp;quot; , &amp;quot;lucida sans&amp;quot; , &amp;quot;geneva&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 34px; font-weight: inherit; letter-spacing: -0.022em;&quot;&gt;Uso Práctico&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9993&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
El siguiente trozo de código simula una clase que necesita negociar con una preferencia de usuario (por ejemplo, permitir notificaciones, orden de clasificación).&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9993&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/1502/1*AyjZlWbpR0nY799znOavXg.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;800&quot; data-original-width=&quot;612&quot; height=&quot;640&quot; src=&quot;https://miro.medium.com/max/1502/1*AyjZlWbpR0nY799znOavXg.png&quot; width=&quot;488&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;aebb&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Conclusiones&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;194f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Como usted puede ver, es sencillo utilizar este paquete.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;df03&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
El código anterior solo pretende mostrar cómo invocar el paquete. En la práctica, es más probable que no tenga un getter/setter por configuración …&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;23fb&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Tenga en cuenta que los Shared Preferences no están cifrados, por lo tanto, no se recomienda colocar datos confidenciales, como una contraseña, por ejemplo.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;996a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Estén atentos para nuevos artículos y feliz codificación.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8d63&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
&lt;br style=&quot;letter-spacing: -0.084px;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/8674166025248757853/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2019/09/shared-preferences-como-guardar-la.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/8674166025248757853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/8674166025248757853'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2019/09/shared-preferences-como-guardar-la.html' title='Shared Preferences: ¿Cómo guardar la configuración de la aplicación Flutter y las preferencias del usuario para su posterior reutilización?'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-2122413183452216612</id><published>2019-09-16T14:35:00.000-05:00</published><updated>2019-09-16T14:35:33.221-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Dart"/><category scheme="http://www.blogger.com/atom/ns#" term="Flutter"/><title type='text'>Parseando JSON complejo en Flutter</title><content type='html'>&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6d14&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Fuente original:&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://medium.com/flutter-community/parsing-complex-json-in-flutter-747c46655f51&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;https://medium.com/flutter-community/parsing-complex-json-in-flutter-747c46655f51&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;31c8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Créditos: Pooja Bhaumik (&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://medium.com/@poojabhaumik&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;https://medium.com/@poojabhaumik&lt;/a&gt;)&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;31c8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/1920/1*HL83nfEtc8iT2OajxfOSBQ.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;533&quot; data-original-width=&quot;800&quot; height=&quot;425&quot; src=&quot;https://miro.medium.com/max/1920/1*HL83nfEtc8iT2OajxfOSBQ.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;49e4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Tengo que admitirlo, Me estaba perdiendo el mundo gson de Android después de trabajar con JSON en Flutter/Dart. Cuando comencé a trabajar con APIs en Flutter, el uso de parsing en JSON me hizo luchar mucho. Y estoy segura, confunde a muchos de ustedes principiantes.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3132&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Estaremos usando la librería incorporada&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;dart:convert&lt;/code&gt;&amp;nbsp;para este blog. Este es el método de parsing más básico y sólo se recomienda si está comenzando con Flutter o si está construyendo un proyecto pequeño. Sin embargo, conocer los conceptos básicos de parsing de JSON en Flutter es bastante importante. Cuando seas bueno en esto, o si necesita trabajar con un proyecto más grande, considere bibliotecas generadoras de código como&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://pub.dartlang.org/packages/json_serializable&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;json_serializable&lt;/a&gt;, etc. Si es posible, las descubriré en los próximos artículos.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;98a9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Haga un fork de este&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;proyecto de ejemplo&lt;/a&gt;. Tiene todo el código para este blog con el que puedes experimentar.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6bec&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Estructura JSON #1: Map simple&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2f2d&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Vamos a empezar con una estructura jSON simple desde&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/assets/student.json&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;students.json&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;31c8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.05); font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.05); font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;&quot;&gt;  &quot;id&quot;:&quot;487349&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.05); font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;&quot;&gt;  &quot;name&quot;:&quot;Pooja Bhaumik&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.05); font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;&quot;&gt;  &quot;score&quot; : 1000&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.05); font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.352px; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a7c4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla #1 : Identifique la estructura. Las cadenas Json tendrán un Map (pares clave-valor) o una Lista de Maps.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;71d4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla #2 : Comienza con llaves? Es un map. Comienza con corchetes? Es una Lista de maps.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;4f74&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;student.json&lt;/code&gt;&amp;nbsp;es claramente un map. (Por ejemplo,&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;id&lt;/code&gt;&amp;nbsp;es una llave, y&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;487349&lt;/code&gt;&amp;nbsp;es el valor de&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;id&lt;/code&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;)&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c2a3&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Vamos a hacer un archivo PODO (Plain Old Dart Object?) para esta estructura json. Puede encontrar este código en&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/lib/model/student_model.dart&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;student_model.dart&lt;/a&gt;&amp;nbsp;en el proyecto de ejemplo.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;ab8a&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Student{
  String studentId;
  String studentName;
  int studentScores;

  Student({
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.studentId,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.studentName,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.studentScores
 });&lt;/span&gt;&lt;span class=&quot;nj ms ct ba mq b bs np nq nr ns nt nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3747&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: 1.91em; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5c4c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Perfecto!.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a30b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;¿Era que? Porque no hubo asignación entre los maps json y este archivo PODO. Incluso los nombres de las entidades no coinciden.&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2740&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Lo sé, lo sé. No hemos terminado todavía. Tenemos que hacer el trabajo de asignar estos miembros de clase al objeto json. Para eso, necesitamos crear un método&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;factory&lt;/code&gt;. De acuerdo con la documentación de Dart, usamos la palabra clave&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;factory&lt;/code&gt;&amp;nbsp;cuando implementamos un constructor que no siempre crea una nueva instancia de su clase y eso es lo que necesitamos ahora.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;961b&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Student.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; parsedJson){
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return &lt;/span&gt;Student(
      studentId: parsedJson[&#39;id&#39;],
      studentName : parsedJson[&#39;name&#39;],
      studentScores : parsedJson [&#39;score&#39;]
    );
  }&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;61dc&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Aquí, estamos creando un método&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;factory&lt;/em&gt;&amp;nbsp;llamado&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Student.fromJson&lt;/code&gt;&amp;nbsp;cuyo objetivo es simplemente deserializar su json.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5550&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Soy un poco novato, ¿puedes hablarme sobre la deserialización?&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3345&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Por supuesto. Vamos a hablarte primero sobre la serialización y deserialización. Serialización simplemente significa escribir los datos (que podrían estar en un objeto) como una cadena, y la Deserialización es lo opuesto a eso. Toma los datos en bruto y reconstruye el modelo de objetos. En este artículo, nos ocuparemos principalmente de la parte de deserialización. En esta primera parte, estamos deserializando la cadena json de&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;student.json&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9c85&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Así que nuestro método&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;factory&lt;/em&gt;&amp;nbsp;podría ser llamado como nuestro método de conversión.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c1a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
También debes notar el parámetro en el método&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;fromJson&lt;/em&gt;. Es un&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;map&lt;string dynamic=&quot;&quot;&gt;&lt;/string&gt;&lt;/em&gt;&amp;nbsp;Significa que mapea una clave cadena con un valor dinámico. Es exactamente por eso que necesitamos identificar la estructura. Si esta estructura json fuera una lista de mapas, entonces este parámetro habría sido diferente.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;081f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Pero porqué dinamico?&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;06ed&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Veamos primero otra estructura json para responder tu pregunta.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;06ed&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://miro.medium.com/max/234/1*Hl992TJGlB0IW_YDkS2HXA.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;241&quot; data-original-width=&quot;234&quot; src=&quot;https://miro.medium.com/max/234/1*Hl992TJGlB0IW_YDkS2HXA.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f0eb&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;name&lt;/em&gt;&amp;nbsp;is un Map&lt;string string=&quot;&quot;&gt;,&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;majors&lt;/em&gt;&amp;nbsp;es un Map de String y List&lt;string&gt; y subjects es un map de String y List&lt;object&gt;&lt;/object&gt;&lt;/string&gt;&lt;/string&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7a14&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Dado que la clave es siempre una cadena y el valor puede ser de cualquier tipo, lo mantenemos como dinámico para estar en el lado seguro.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c989&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Vea el código completo de&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;student_model.dart&lt;/em&gt;&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/lib/model/student_model.dart&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;040b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Accediendo al objeto&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b564&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Escribamos&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;student_services.dart&lt;/em&gt;&amp;nbsp;que tendrá el código para llamar a&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Student.fromJson&lt;/em&gt;&amp;nbsp;y recuperar los valores del objeto&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Student&lt;/em&gt;.&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;4b11&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
Snippet #1 : imports&lt;/h2&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9f6d&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;import &lt;/span&gt;&#39;dart:async&#39; &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;show &lt;/span&gt;Future;
&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;import &lt;/span&gt;&#39;package:flutter/services.dart&#39; &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;show &lt;/span&gt;rootBundle;
&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;import &lt;/span&gt;&#39;dart:convert&#39;;
&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;import &lt;/span&gt;&#39;package:flutter_json/student_model.dart&#39;;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7e3e&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
El último import será el nombre de su archivo model.&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a6ae&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
Snippet #2 : cargar el Asset Json (opcional)&lt;/h2&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c98c&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;Future&lt;string&gt; _loadAStudentAsset() &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;async &lt;/span&gt;{
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return await &lt;/span&gt;rootBundle.loadString(&#39;assets/student.json&#39;);
}&lt;/string&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1b7e&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
En este proyecto en particular, tenemos nuestros archivos json en la carpeta Assets, por lo que tenemos que cargar el json de esta manera. Pero si tiene su archivo json en la nube, puede hacer una llamada de red en su lugar. Las llamadas de red están fuera del alcance de este artículo.&lt;/div&gt;
&lt;h2 class=&quot;nj ms ct ba az dw nw nx ny nz oa ob oc od oe of og&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1dbb&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 26px; letter-spacing: -0.022em; line-height: 1.18; margin: 1.72em 0px -0.31em;&quot;&gt;
Snippet #3 : cargar el response&lt;/h2&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0c95&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;Future loadStudent() &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;async &lt;/span&gt;{
  String jsonString = &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;await &lt;/span&gt;_loadAStudentAsset();
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;jsonResponse = json.decode(jsonString);
  Student student = &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;new &lt;/span&gt;Student.fromJson(jsonResponse);
  print(student.studentScores);
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3f44&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
In this método&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;loadStudent()&lt;/code&gt;,&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b263&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Line 1&lt;/span&gt;&amp;nbsp;: cargando el json string crudo desde los assets.&lt;br /&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Line 2&lt;/span&gt;&amp;nbsp;: Decodificando esta cadena json cruda que tenemos.&lt;br /&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Line 3&lt;/span&gt;&amp;nbsp;: Y ahora estamos deserializando la respuesta json decodificada llamando al método&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Student.fromJson&lt;/code&gt;&amp;nbsp;para que podamos usar el objeto&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Student&lt;/code&gt;&amp;nbsp;para acceder a nuestras entidades.&lt;br /&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Line 4&lt;/span&gt;&amp;nbsp;: Como hicimos aquí, donde nosotros imprimimos&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;studentScores&lt;/code&gt;&amp;nbsp;desde la clase&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Student&lt;/code&gt;class.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;133c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Revise su consola Flutter para ver todos sus valores de impresión. (En Android Studio, está bajo la pestaña Ejecutar)&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b8d5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
¡Y voilá! Acabas de hacer tu primer parsing JSON (o no).&lt;br /&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Nota: recuerde los 3 fragmentos de código aquí, lo usaremos para el siguiente conjunto de parsing json (solo cambiando los nombres de archivo y de método), y no repetiré el código nuevamente aquí. Pero puedes encontrar todo en el proyecto de muestra de todos modos.&lt;/em&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;50b5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Estructura JSON #2 : Estructura simple con arrays&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1135&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Ahora conquistamos una estructura json que es similar a la anterior, pero en lugar de valores simples, también puede tener un array de valores.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7acc&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;{
  &quot;city&quot;: &quot;Mumbai&quot;,
  &quot;streets&quot;: [
    &quot;address1&quot;,
    &quot;address2&quot;
  ]
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;b005&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Así que en esta address.json, tenemos una entidad&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;city&lt;/code&gt;&amp;nbsp;que tiene un valor&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;String&lt;/code&gt;&amp;nbsp;simple, pero&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streets&lt;/code&gt;&amp;nbsp;es un array de&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;String&lt;/code&gt;.&lt;br /&gt;
Por lo que sé, Dart no tiene un tipo de datos de matriz, pero en cambio tiene un &lt;datatype&gt; List, por lo que aquí&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streets&lt;/code&gt;&amp;nbsp;será un&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;string&gt;.&lt;/string&gt;&lt;/code&gt;&lt;/datatype&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8b58&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ahora tenemos que verificar la&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla # 1 y la Regla # 2&lt;/span&gt;. Este es definitivamente un Map ya que comienza con una llave. Sin embargo,&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streets&lt;/code&gt;&amp;nbsp;sigue siendo&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;/code&gt;, pero eso nos preocupará más adelante.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0db2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Así que&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;address_model.dart&lt;/code&gt;&amp;nbsp;inicialmente se verá así&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;17cf&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Address {
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;String city;
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;List&lt;string&gt; streets;

  Address({
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.city,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.streets
  });
}&lt;/string&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;09c0&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ahora, debido a que este es un map, nuestro método&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Address.fromJson&lt;/code&gt;&amp;nbsp;todavía tendrá un parámetro&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Map&lt;string dynamic=&quot;&quot;&gt;&lt;/string&gt;&lt;/code&gt;.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6bb3&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Address.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; parsedJson) {
  
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return new &lt;/span&gt;Address(
      city: parsedJson[&#39;city&#39;],
      streets: parsedJson[&#39;streets&#39;],
  );
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7ef5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ahora construya el archivo&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;address_services.dart&lt;/code&gt;&amp;nbsp;añadiendo los tres trozos de cigo que mencionamos arriba.&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Debe recordar poner los nombres de archivo y los nombres de método apropiados. El proyecto de ejemplo ya tiene el archivo&lt;/em&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;address_services.dart&lt;/em&gt;&lt;/code&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;&amp;nbsp;construido para ti.&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a273&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ahora, cuando ejecutes esto, obtendrás un pequeño error. : /&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;e1dc&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;type &#39;List&lt;dynamic&gt;&#39; is not a subtype of type &#39;List&lt;string&gt;&#39;&lt;/string&gt;&lt;/dynamic&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0797&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Te digo, estos errores se han producido en casi todos los pasos de mi desarrollo con Dart. Y los tendrás también. Así que déjame explicarte lo que esto significa. Estamos requiriendo un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;string&gt;&lt;/string&gt;&lt;/code&gt;&amp;nbsp;pero estamos obteniendo un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;dynamic&gt;&lt;/dynamic&gt;&lt;/code&gt;&amp;nbsp;porque nuestra aplicación no puede identificar el tipo todavía.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2db1&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Así que tenemos que convertir explícitamente esto a un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;string&gt;&lt;/string&gt;&lt;/code&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c1e7&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;var &lt;/span&gt;streetsFromJson = parsedJson[&#39;streets&#39;];
List&lt;string&gt; streetsList = &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;new &lt;/span&gt;List&lt;string&gt;.from(streetsFromJson);&lt;/string&gt;&lt;/string&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f936&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Aquí, primero estamos mapeando nuestra variable&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streetsFromJson&lt;/code&gt;&amp;nbsp;a la entidad&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streets&lt;/code&gt;.&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streetsFromJson&lt;/code&gt;&amp;nbsp;sigue siendo todavía&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;dynamic&gt;&lt;/dynamic&gt;&lt;/code&gt;. Ahora creamos explícitamente un nuevo&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;string&gt; streetsList&lt;/string&gt;&lt;/code&gt;&amp;nbsp;que contiene todos los elementos de&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;streetsFromJson&lt;/code&gt;.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0042&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Compruebe el método actualizado&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/lib/model/address_model.dart&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;. Observe la declaración de devolución ahora. Puede ejecutar esto con&amp;nbsp;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;address_services.dart&lt;/em&gt;&amp;nbsp;y esto funcionará perfectamente.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;187b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Estructura Json #3 : Estructuras anidadas simples&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3f99&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Ahora si tenemos una estructura anidada como esta de&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/assets/shape.json&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;shape.json&lt;/a&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;f4f0&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;{
  &quot;shape_name&quot;:&quot;rectangle&quot;,
  &quot;property&quot;:{
    &quot;width&quot;:5.0,
    &quot;breadth&quot;:10.0
  }
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1317&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Aquí, property contiene un objeto en vez de un tipo de dato primitivo básico. Entonces, ¿cómo se verá el PODO?&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0fc6&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Está bien, vamos a romper un poco.&lt;br /&gt;
En nuestro shape_model.dart, primero hagamos una clase para Property.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;4d83&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Property{
  double width;
  double breadth;

  Property({
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.width,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.breadth
});
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8543&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ahora, vamos a construir la clase para Shape. Estoy manteniendo ambas clases en el mismo archivo Dart.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3de4&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Shape{
  String shapeName;
  Property property;

  Shape({
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.shapeName,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.property
  });
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;772e&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Note cómo el segundo miembro de dato property es básicamente un objeto de nuestra clase Property vista anteriormente.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0669&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla #3: Para estructuras anidadas, haga las clases y constructores primero, y luego añada los métodos factory desde el nivel inferior.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;35f8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Por nivel inferior, queremos decir, primero conquistamos la clase Property y luego subimos un nivel por encima de la clase Shape. Esta es solo mi sugerencia, no una regla de Flutter.&lt;/em&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;26cc&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Property.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; json){
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return &lt;/span&gt;Property(
    width: json[&#39;width&#39;],
    breadth: json[&#39;breadth&#39;]
  );
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2b30&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Esto fue un simple map.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1df4&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Pero para nuestro método factory en la clase Shape, podemos sólo hacer esto:&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;e935&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Shape.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; parsedJson){
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return &lt;/span&gt;Shape(
    shapeName: parsedJson[&#39;shape_name&#39;],
    property : parsedJson[&#39;property&#39;]
  );
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9a1d&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;property : parsedJson[&#39;property&#39;]&lt;/code&gt;&amp;nbsp;Primero, esto lanzará el error de tipo mismatch —&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;bb3e&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;type &#39;_InternalLinkedHashMap&lt;string dynamic=&quot;&quot;&gt;&#39; is not a subtype of type &#39;Property&#39;&lt;/string&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;333d&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Y segundo, hey, acabamos de hacer esta pequeña clase para Property, no veo su uso en ninguna parte.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7f74&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Correcto. Debemos mapear nuestra clase Property aquí.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0a9d&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Shape.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; parsedJson){
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return &lt;/span&gt;Shape(
    shapeName: parsedJson[&#39;shape_name&#39;],
    property: &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Property.fromJson(parsedJson[&#39;property&#39;])&lt;/span&gt;
  );
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;30c9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Básicamente, estamos llamando al método Property.fromJson desde nuestra clase Property y, a pesar de lo que obtengamos a cambio, lo asignamos a la entidad property. ¡Sencillo! Echa un vistazo al código&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/lib/model/shape_model.dart&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;ba59&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ejecute esto con su shape_services.dart y estará listo.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2123&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Estructura JSON #4 : Estructuras anidadas con Listas&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;ae97&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Revisemos nuestro&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/assets/product.json&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;product.json&lt;/a&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;68ac&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;{
  &quot;id&quot;:1,
  &quot;name&quot;:&quot;ProductName&quot;,
  &quot;images&quot;:[
    {
      &quot;id&quot;:11,
      &quot;imageName&quot;:&quot;xCh-rhy&quot;
    },
    {
      &quot;id&quot;:31,
      &quot;imageName&quot;:&quot;fjs-eun&quot;
    }
  ]
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;54cb&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Está bien, ahora estamos profundizando. Vemos una lista de objetos en algún lugar dentro.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5dc8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Si, esta estructura tiene una Lista de objetos, pero en si mismo es todavía un map. (Vea la&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla #1&lt;/span&gt;, y&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla #2&lt;/span&gt;). Ahora, refiriéndonos a la&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Regla #3&lt;/span&gt;, vamos a construir nuestro&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;product_model.dart&lt;/code&gt;.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;442b&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Entonces creamos dos nuevas clases&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Product&lt;/code&gt;&amp;nbsp;y&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image&lt;/code&gt;.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3d24&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Nota:&amp;nbsp;&lt;/em&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Product&lt;/em&gt;&lt;/code&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;&amp;nbsp;tendrá un miembro de dato que es una Lista de&lt;/em&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Image&lt;/em&gt;&lt;/code&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;fbee&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Product {
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;int id;
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;String name;
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final List&lt;image&gt; images;&lt;/image&gt;&lt;/span&gt;

  Product({&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.id, &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.name, &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.images});
}

&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Image {
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;int imageId;
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;String imageName;

  Image({&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.imageId, &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.imageName});
}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a863&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
El método factory para&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image&lt;/code&gt;&amp;nbsp;será un poco simple y básico.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9e27&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Image.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; parsedJson){
 &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return &lt;/span&gt;Image(
   imageId:parsedJson[&#39;id&#39;],
   imageName:parsedJson[&#39;imageName&#39;]
 );
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;673c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Ahora para el método factory de&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Product&lt;/code&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;52bb&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Product.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; parsedJson){

  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return &lt;/span&gt;Product(
    id: parsedJson[&#39;id&#39;],
    name: parsedJson[&#39;name&#39;],
    images: parsedJson[&#39;images&#39;]
  );
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;88a2&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Esto obviamente lanzará un error de tiempo de ejecución&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6369&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;type &#39;List&lt;dynamic&gt;&#39; is not a subtype of type &#39;List&lt;image&gt;&#39;&lt;/image&gt;&lt;/dynamic&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;4cbc&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Y si hacemos esto,&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;444b&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;images: Image.fromJson(parsedJson[&#39;images&#39;])&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a7f8&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Esto también está definitivamente incorrecto, y te lanzará un error inmediatamente porque usted no puede asignar un Objeto&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image&lt;/code&gt;&amp;nbsp;a una&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;image&gt;&lt;/image&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;431c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Entonces tenemos que crear un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;image&gt;&lt;/image&gt;&lt;/code&gt;&amp;nbsp;y luego asignarlo a&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;images&lt;/code&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;8c4e&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;var &lt;/span&gt;list = parsedJson[&#39;images&#39;] &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;as &lt;/span&gt;List;
print(list.runtimeType); //returns List&lt;dynamic&gt;&lt;/dynamic&gt;&lt;/span&gt;&lt;span class=&quot;nj ms ct ba mq b bs np nq nr ns nt nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;84bb&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: 1.91em; white-space: pre-wrap;&quot;&gt;List&lt;image&gt; imagesList = list.map((i) =&amp;gt; Image.fromJson(i)).toList();&lt;/image&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3de7&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;list&lt;/code&gt;&amp;nbsp;aquí es una List&lt;dynamic&gt;. Ahora, iteramos sobre la lista y mapear cada objeto en&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;list&lt;/code&gt;&amp;nbsp;a&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image&lt;/code&gt;&amp;nbsp;llamando&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image.fromJson&lt;/code&gt;&amp;nbsp;y luego ponemos cada objeto map en una nueva lista con&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;toList()&lt;/code&gt;&amp;nbsp;y almacenarlo en&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;image&gt; imagesList&lt;/image&gt;&lt;/code&gt;. Encuentra el código completo&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/lib/model/product_model.dart&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/dynamic&gt;&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6a9f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Estrutura JSON #5 : Lista de maps&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3f05&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Ahora vamos a&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/assets/photo.json&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;photo.json&lt;/a&gt;&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;405a&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;[
  {
    &quot;albumId&quot;: 1,
    &quot;id&quot;: 1,
    &quot;title&quot;: &quot;accusamus beatae ad facilis cum similique qui sunt&quot;,
    &quot;url&quot;: &quot;http://placehold.it/600/92c952&quot;,
    &quot;thumbnailUrl&quot;: &quot;http://placehold.it/150/92c952&quot;
  },
  {
    &quot;albumId&quot;: 1,
    &quot;id&quot;: 2,
    &quot;title&quot;: &quot;reprehenderit est deserunt velit ipsam&quot;,
    &quot;url&quot;: &quot;http://placehold.it/600/771796&quot;,
    &quot;thumbnailUrl&quot;: &quot;http://placehold.it/150/771796&quot;
  },
  {
    &quot;albumId&quot;: 1,
    &quot;id&quot;: 3,
    &quot;title&quot;: &quot;officia porro iure quia iusto qui ipsa ut modi&quot;,
    &quot;url&quot;: &quot;http://placehold.it/600/24f355&quot;,
    &quot;thumbnailUrl&quot;: &quot;http://placehold.it/150/24f355&quot;
  }
]&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;3160&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
La regla # 1 y la regla # 2 me dicen que esto no puede ser un map porque la cadena json comienza con un corchete. ¿Así que esta es una lista de objetos? Sí. El objeto que está aquí es&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Photo&lt;/code&gt;&amp;nbsp;(o como quieras llamarlo).&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;6d90&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;Photo{
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;String id;
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;String title;
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;String url;

  Photo({
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.id,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.url,
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.title
}) ;

  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;Photo.fromJson(Map&lt;string class=&quot;mq nn&quot; font=&quot;&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/string&gt;&lt;/span&gt;&amp;gt; json){
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return new &lt;/span&gt;Photo(
      id: json[&#39;id&#39;].toString(),
      title: json[&#39;title&#39;],
      url: json[&#39;json&#39;],
    );
  }
}&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9e6a&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Pero esto es una lista de&lt;/em&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Photo&lt;/em&gt;&lt;/code&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;&amp;nbsp;, entonces esto significa que tienes que construir una clase que contega una&amp;nbsp;&lt;/em&gt;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;List&lt;photo&gt;&lt;/photo&gt;&lt;/em&gt;&lt;/code&gt;&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;?&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;2390&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Así es, podría sugerir eso&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;7ba7&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;class &lt;/span&gt;PhotosList {
  &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;final &lt;/span&gt;List&lt;photo&gt; photos;

  PhotosList({
    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;this&lt;/span&gt;.photos,
  });
}&lt;/photo&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;e34c&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
También note que, este string es una Lista de maps. Entonces, en nuestro método factory, no tendremos un parámetro&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Map&lt;string dynamic=&quot;&quot;&gt;&lt;/string&gt;&lt;/code&gt;, porque esto es una Lista. Y eso es exactamente porqué es importante identificar la estructura primero. Luego, nuestro nuevo parámetro podría ser un&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;List&lt;dynamic&gt;&lt;/dynamic&gt;&lt;/code&gt;.&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1eeb&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;factory &lt;/span&gt;PhotosList.fromJson(List&amp;lt;&lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;dynamic&lt;/span&gt;&amp;gt; parsedJson) {

    List&lt;photo&gt; photos = new List&lt;photo&gt;();

    &lt;span class=&quot;mq nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;return new &lt;/span&gt;PhotosList(
       photos: photos,
    );
  }&lt;/photo&gt;&lt;/photo&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;74d7&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Esto podría lanzar un error&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;a41c&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;Invalid value: Valid value range is empty: 0&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;5482&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Hey, porque nosotros nunca podríamos usar el método&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Photo.fromJson&lt;/code&gt;.&lt;br /&gt;
Porqué, si nosotros añadimos esta línea de código después de nuestra inicialización&amp;nbsp;&lt;mark class=&quot;oi oj ok&quot; style=&quot;background-color: rgba(12, 242, 143, 0.2); box-sizing: inherit; color: currentcolor; cursor: pointer;&quot;&gt;de&lt;/mark&gt;&amp;nbsp;la lista?&lt;/div&gt;
&lt;pre class=&quot;lv lw lx ly lz gn ic ek&quot; style=&quot;background: rgba(0, 0, 0, 0.05); box-sizing: inherit; color: rgba(0, 0, 0, 0.8); margin-top: 56px; overflow-x: auto; padding: 20px;&quot;&gt;&lt;span class=&quot;nj ms ct ba mq b bs nk nl l nm&quot; data-selectable-paragraph=&quot;&quot; id=&quot;589a&quot; style=&quot;box-sizing: inherit; color: rgba(0 , 0 , 0 , 0.84); display: block; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace; font-size: 16px; letter-spacing: -0.022em; line-height: 1.18; margin-bottom: -0.09em; margin-top: -0.09em; white-space: pre-wrap;&quot;&gt;photos = parsedJson.map((i)=&amp;gt;Photo.fromJson(i)).toList();&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;183f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
El mismo concepto que antes, simplemente no tenemos que asignar esto a ninguna clave de la cadena json, porque es una Lista, no un mapa. Código&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/lib/model/photo_model.dart&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;h1 class=&quot;mr ms ct ba az dw mt mu mv mw mx my mz na nb nc nd&quot; data-selectable-paragraph=&quot;&quot; id=&quot;c7b6&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 34px; letter-spacing: -0.022em; line-height: 1.12; margin: 1.95em 0px -0.28em;&quot;&gt;
Estructura JSON #6 : Estructuras anidadas complejas&lt;/h1&gt;
&lt;div class=&quot;lc ld ct ba le b lf ne lh nf lj ng ll nh ln ni lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;4dda&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 0.86em;&quot;&gt;
Aquí está&amp;nbsp;&lt;a class=&quot;bx di lq lr ls lt&quot; href=&quot;https://github.com/PoojaB26/ParsingJSON-Flutter/blob/master/assets/page.json&quot; rel=&quot;noopeneer&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;Page.json&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;71c9&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Te pediré que resuelvas esto. Ya está incluido en el proyecto de muestra. Solo tienes que construir el modelo y el archivo de servicios para esto. Pero no concluiré antes de darte sugerencias y consejos (si es el caso, necesitas alguno).&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;0312&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
La regla # 1 y la regla # 2 como de costumbre se aplican. Identificar primero la estructura. Aquí hay un map. Así que todas las estructuras de json del 1 al 5 ayudarán.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;9892&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
La regla # 3 le pide que primero cree las clases y los constructores, y luego agregue los métodos de fábrica desde el nivel inferior. Sólo otro consejo. También agregue las clases desde el nivel profundo / inferior. Por ejemplo, para esta estructura json, cree la clase para&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image&lt;/code&gt;&amp;nbsp;primero, luego&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Data&lt;/code&gt;&amp;nbsp;y&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Author&lt;/code&gt;&amp;nbsp;y luego la clase principal&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Page&lt;/code&gt;. Y agrega los métodos factory también en la misma secuencia.&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;81b5&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Para las clases&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Image&lt;/code&gt;&amp;nbsp;y&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Data&lt;/code&gt;&amp;nbsp;refiérase&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Estructura&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Json #4&lt;/span&gt;.&lt;br /&gt;
Para la clase&amp;nbsp;&lt;code class=&quot;mh mn mo mp mq b&quot; style=&quot;background-color: rgba(0, 0, 0, 0.05); box-sizing: inherit; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: 15.75px; padding: 2px 4px;&quot;&gt;Author&lt;/code&gt;&amp;nbsp;refiérase a&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Estructura&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;le nn&quot; style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;Json #3.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;236f&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
&lt;em class=&quot;no&quot; style=&quot;box-sizing: inherit;&quot;&gt;Tip para principiantes: Mientras experimenta con cualquier nuevo assets, recuerde declararlo en el archivo pubspec.yaml.&lt;/em&gt;&lt;/div&gt;
&lt;div class=&quot;lc ld ct ba le b lf lg lh li lj lk ll lm ln lo lp&quot; data-selectable-paragraph=&quot;&quot; id=&quot;1089&quot; style=&quot;background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.84); font-size: 21px; letter-spacing: -0.004em; line-height: 1.58; margin-bottom: -0.46em; margin-top: 2em;&quot;&gt;
Y eso es todo para este artículo de Flutter. Es posible que este artículo no sea el mejor artículo de análisis JSON que existe (porque todavía estoy aprendiendo mucho), pero espero que haya comenzado.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/2122413183452216612/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2019/09/parseando-json-complejo-en-flutter.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/2122413183452216612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/2122413183452216612'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2019/09/parseando-json-complejo-en-flutter.html' title='Parseando JSON complejo en Flutter'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-8596901309414591300</id><published>2018-07-23T14:28:00.000-05:00</published><updated>2018-07-23T14:28:49.232-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gimp"/><category scheme="http://www.blogger.com/atom/ns#" term="imagen"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Liberado GIMP 2.10.4 con inicio más rápido y herramienta de Auto Enderezado</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.omgubuntu.co.uk/wp-content/uploads/2018/05/GIMP-2.10-dark-ui.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;489&quot; data-original-width=&quot;800&quot; height=&quot;388&quot; src=&quot;https://www.omgubuntu.co.uk/wp-content/uploads/2018/05/GIMP-2.10-dark-ui.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;GIMP 2.10.4 en una Release menor de esta maravillosa herramienta de edición de fotografías, con una cantidad de mejoras.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Carga de fuentes de forma Asíncrona&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;GIMP ya no tiene que esperar que termine la carga de las fuentes para así cargar el resto. Esto permite que la aplicación cargue más rápido y su uso sea inmediato, para así empezar a editar cosas que no tengan que ver con texto como por ejemplo editar los colores o manipulación de una imagen.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Cuando hagas clic en la herramienta de Texto, entonces comenzará a cargar las fuentes, lo cual puede tomar un tiempo dependiendo del equipo que tengas.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Etiquetado de fuentes&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Otro cambio 
relacionado con las fuentes en esta versión es la capacidad de etiquetar
 las fuentes de la misma manera que los degradados, los pinceles y los 
patrones.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Esto es útil cuando manejas toneladas de fuentes y quieres identificarlas o agruparlas mediante una etiqueta para encontrarlas más fácil, por ejemplo &quot;fuentes de mi empresa&quot;, &quot;Comic Book&quot;, etc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Auto Enderezado&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;¿Alguna vez has tomado una foto y te has dado cuenta de que la imagen sale con un ángulo?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Si es así, la opción Auto Enderezado de GIMP te arregla la foto automáticamente para que quede enderezada.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Para rectificar y
 rotar automáticamente sus imágenes desalineadas, simplemente seleccione
 la herramienta Medir desde el selector de herramientas, mida el ángulo 
del horizonte en su imagen, y luego haga clic en el nuevo botón 
&quot;Enderezar&quot; para que GIMP ajuste su imagen en correctamente.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.omgubuntu.co.uk/wp-content/uploads/2018/07/gimp-2-10-4-straighten.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;492&quot; data-original-width=&quot;800&quot; height=&quot;392&quot; src=&quot;https://www.omgubuntu.co.uk/wp-content/uploads/2018/07/gimp-2-10-4-straighten.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Otros cambios&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Las mejoras mencionadas anteriormente no son los únicos cambios en GIMP 2.10.4:&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Aplicar múltiples transformaciones simultáneamente en el filtro de transformación&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;El widget del tablero ahora puede mostrar el uso detallado de la memoria&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;Mejor soporte para archivos PSD guardados con la opción &quot;Maximizar compatibilidad&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;Tono-saturación selectiva&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;Nuevo administrador de opciones de herramientas&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;Puede encontrar un registro de cambios completo para este Release adjunto al &lt;a href=&quot;https://mail.gnome.org/archives/gimp-developer-list/2018-July/msg00007.html&quot; target=&quot;_blank&quot;&gt;anuncio de la lista de correos de GIMP&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/8596901309414591300/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2018/07/liberado-gimp-2104-con-inicio-mas.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/8596901309414591300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/8596901309414591300'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2018/07/liberado-gimp-2104-con-inicio-mas.html' title='Liberado GIMP 2.10.4 con inicio más rápido y herramienta de Auto Enderezado'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-1952491098813546011</id><published>2016-06-18T21:34:00.001-05:00</published><updated>2016-06-18T21:34:56.557-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Firebase"/><category scheme="http://www.blogger.com/atom/ns#" term="gdgcali"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>Firebase: más que una base de datos</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlVX3nyaWKWY9uhZ_rbLDJFyNi1eU6nNzlZbjUuqR_hOJFKsGB4cyqIXhlzXdGYhFiBTw2sQUuYR-kJl4pooHf6P6K7itSs5KYBdfEcBmV9DmNqBSyTyTTnOPCNmnFHAML9Y_RdZAPFyjl/s1600/image00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlVX3nyaWKWY9uhZ_rbLDJFyNi1eU6nNzlZbjUuqR_hOJFKsGB4cyqIXhlzXdGYhFiBTw2sQUuYR-kJl4pooHf6P6K7itSs5KYBdfEcBmV9DmNqBSyTyTTnOPCNmnFHAML9Y_RdZAPFyjl/s400/image00.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hola amigos, hoy estuve en una charla que hizo la Comunidad de Desarrolladores de Google (GDG) en la ciudad de Cali, y estuvieron hablando sobre Firebase.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Siempre pensaba que era sólo otra base de datos más, pero en la charla ví muchas cosas muy interesantes sobre esta herramienta. Firebase fue comprada en el 2014 por Google y ofrece un conjunto de productos para que los desarrolladores de software construyan aplicaciones web o móviles. También posee un backend como servicio.&lt;/div&gt;
&lt;br /&gt;
Firebase ofrece servicios tales como:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Base de datos en tiempo real&lt;/li&gt;
&lt;li&gt;User Authentication&lt;/li&gt;
&lt;li&gt;Static Hosting&lt;/li&gt;
&lt;li&gt;Remote Config&lt;/li&gt;
&lt;li&gt;Crash&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Test Lab&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Puedes utilizar Firebase con lenguajes de programación tales como Ruby, Python, PHP, Javascript, Android, iOS, etc; con sólo agregar unas líneas de código.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Posee también herramientas de Analytic y un servicio muy interesante que me gustó llamada Crash.&amp;nbsp; La función de Crash es informar al grupo de desarrollo sobre lo errores o crashs que les aparecen a los usuarios cuando utilizan su aplicación/es, tales como la marca del dispositivo, el modelo, el proveedor u operador que utiliza, el país, el detalle del error, y otras más; con el fin de que el desarrollador o el grupo de trabajo tome decisiones para corregir el problema.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Muchas de las características son de uso gratuito y además ofrece un almacenamiento de 1 giga, pero si quieres tener más almacenamiento, tiene un costo.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En fin, yo creo que este artículo expliqué lo mínimo de lo que ví en la charla, pero me gustaría que ingresaran a &lt;a href=&quot;https://firebase.google.com/&quot;&gt;https://firebase.google.com/&lt;/a&gt; para que conozcan más de esta herramienta y creen una cuenta gratis para utilizar los servicios antes citados.&lt;/div&gt;
&lt;br /&gt;
Saludos!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/1952491098813546011/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/06/firebase-mas-que-una-base-de-datos.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1952491098813546011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1952491098813546011'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/06/firebase-mas-que-una-base-de-datos.html' title='Firebase: más que una base de datos'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlVX3nyaWKWY9uhZ_rbLDJFyNi1eU6nNzlZbjUuqR_hOJFKsGB4cyqIXhlzXdGYhFiBTw2sQUuYR-kJl4pooHf6P6K7itSs5KYBdfEcBmV9DmNqBSyTyTTnOPCNmnFHAML9Y_RdZAPFyjl/s72-c/image00.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-4341073569613200457</id><published>2016-06-02T21:40:00.000-05:00</published><updated>2016-06-04T10:57:28.981-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="angular"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><title type='text'>Animación de lista tipo Material Design con Javascript</title><content type='html'>En esta ocasión comparto con ustedes una animación que estuve buscando, y lamentablemente no la encontré.&lt;br /&gt;
Se trata de una animación de Lista como lo hace Android Lollipop. Manos a la obra.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Comencemos&lt;/h2&gt;
En el editor de tu preferencia debes crear un archivo llamado index.html con el siguiente contenido.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/N96J238d&quot;&gt;&lt;/script&gt; &lt;br /&gt;
&lt;br /&gt;
Así mismo crearemos un archivo llamado main.js con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/9ndkTqEq&quot;&gt;&lt;/script&gt; &lt;br /&gt;
&lt;br /&gt;
De igual forma creamos un archivo llamado style.css con el contenido siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/GjVyYHvA&quot;&gt;&lt;/script&gt; &lt;br /&gt;
&lt;br /&gt;
El resultado final será este:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs_dp5Qgh_6WUg4wCi4emDAuuEmbMuYho3HBypm8tC_cMzz8-eSNhjfo0p6U87dNLMTHmMesEka8XCCQnQV_KJ-odgKfE5dQo91CiYy0HisY1YZTYu0mi8RaNEPBNLlcmwQB2itHkHOz3n/s1600/codejs.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs_dp5Qgh_6WUg4wCi4emDAuuEmbMuYho3HBypm8tC_cMzz8-eSNhjfo0p6U87dNLMTHmMesEka8XCCQnQV_KJ-odgKfE5dQo91CiYy0HisY1YZTYu0mi8RaNEPBNLlcmwQB2itHkHOz3n/s320/codejs.jpg&quot; width=&quot;276&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;
Conclusión&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Las animaciones de los diversos dispositivos con los que actualmente 
convivimos pueden ser traducidas de una manera sencilla a la web.&lt;/div&gt;
&lt;b&gt;También puede interesarte &lt;a href=&quot;http://codepen.io/dcergo/pen/BKmGJr&quot; target=&quot;_blank&quot;&gt;esta&lt;/a&gt; directiva para angular!&lt;/b&gt;&amp;nbsp; </content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/4341073569613200457/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/06/animacion-de-lista-tipo-material-design.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/4341073569613200457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/4341073569613200457'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/06/animacion-de-lista-tipo-material-design.html' title='Animación de lista tipo Material Design con Javascript'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs_dp5Qgh_6WUg4wCi4emDAuuEmbMuYho3HBypm8tC_cMzz8-eSNhjfo0p6U87dNLMTHmMesEka8XCCQnQV_KJ-odgKfE5dQo91CiYy0HisY1YZTYu0mi8RaNEPBNLlcmwQB2itHkHOz3n/s72-c/codejs.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-1831475974812795734</id><published>2016-06-01T21:06:00.002-05:00</published><updated>2016-06-04T10:58:24.650-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="udemy"/><title type='text'>Udemy - Probar Django | Construir una Aplicación Web en Python [Free] </title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifc-79J-TvcHTCzIszG0hhC4y7nCHYDwqEykFVLP4OJUOi2DIdpS-eiSQt5n_FMZOraRry5TepY6daT-joabQS78pYa0v_Ftlk78ACaj9jYfr0yk-62RT02a14xPxGy-B6Qe5olqWOr3hO/s640/729456_60dc.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifc-79J-TvcHTCzIszG0hhC4y7nCHYDwqEykFVLP4OJUOi2DIdpS-eiSQt5n_FMZOraRry5TepY6daT-joabQS78pYa0v_Ftlk78ACaj9jYfr0yk-62RT02a14xPxGy-B6Qe5olqWOr3hO/s320/729456_60dc.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Probar Django 1.9 &lt;/b&gt;es un video tutorial de Django 
para principiantes. Un curso ideal para gente sin mucha experiencia 
técnica ya que Django es un framework que fomenta el desarrollo rápido 
junto a un diseño limpio y pragmático. Te enseñaremos lo suficiente 
--sin marearte-- para que te quedes con una buena base para después, 
poder crear una aplicación web.&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Crear el proyecto de tus sueños en poco tiempo.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Empezar un proyecto con Django&lt;/li&gt;
&lt;li&gt;Acabar con una página de aterrizaje (&quot;landing page&quot;) lista para personalizar&lt;/li&gt;
&lt;li&gt;Instalar todo el software necesario&lt;/li&gt;
&lt;li&gt;Aprender los componentes básicos del framework&lt;/li&gt;
&lt;li&gt;Escribir código utilizando el lenguaje de programación &#39;Python&#39;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Django
 es un backend framework de código abierto y de alto nivel, utilizado 
por Instagram y Pinterest. Con Django es posible construir aplicaciones 
web muy útiles y poderosas para todos tus proyectos. Está escrito en 
Python, un lenguaje de programación potente y muy expresivo, es perfecto
 tanto para expertos como para principiantes. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Las comunidades de Django y Python no dejan de crecer, únete y verás las posibilidades que te salen!&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Resumen del Curso&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este curso con enfoque 
práctico está dirigido a gente motivada y sin experiencia técnica ya que
 con Django se puede crear aplicaciones escribiendo el menor código 
posible. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como está escrito en Python, aprenderás el concepto de 
programación orientada a objetos (POO, u OOP según sus siglas en 
inglés), un paradigma de programación que usa objetos en sus 
interacciones, para diseñar programas informáticos. Está basada en 
varias técnicas, incluyendo herencia y encapsulamiento.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Siguiendo 
el curso, crearás una página de aterrizaje --pasito a pasito-- algo que 
te servirá como base para tu gran proyecto, una aplicación web con mucha
 funcionalidad. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por último, doy explicaciones para principiantes,
 es decir, no te explicaré &quot;en marciano&quot;. Quiero que tu primera 
experiencia con Django sea agradable NO frustrante! &lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Elementos de Django que cubrimos en este curso:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Formularios (Django Forms y Model Forms)&lt;/li&gt;
&lt;li&gt;Modelos&lt;/li&gt;
&lt;li&gt;Vistas&lt;/li&gt;
&lt;li&gt;Interfaz Administrativa&lt;/li&gt;
&lt;li&gt;Plantillas&lt;/li&gt;
&lt;li&gt;URLs &lt;/li&gt;
&lt;li&gt;Archivos Estáticos (imágenes)&lt;/li&gt;
&lt;li&gt;Diseño Básico (HTML &amp;amp; CSS)&lt;/li&gt;
&lt;li&gt;QuerySets&lt;/li&gt;
&lt;li&gt;y MUCHO MÁS!&lt;/li&gt;
&lt;/ul&gt;
Visita el siguiente link para entrar a la página del curso:  &lt;a href=&quot;https://www.udemy.com/probar-django-construir-una-aplicacion-web-en-python/?siteID=umiIAUCzJGM-dUVIBP7qWeYnITEZjo5eyQ&amp;amp;LSNPUBID=umiIAUCzJGM&quot;&gt;Udemy Django&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/1831475974812795734/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/06/udemy-probar-django-construir-una.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1831475974812795734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1831475974812795734'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/06/udemy-probar-django-construir-una.html' title='Udemy - Probar Django | Construir una Aplicación Web en Python [Free] '/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifc-79J-TvcHTCzIszG0hhC4y7nCHYDwqEykFVLP4OJUOi2DIdpS-eiSQt5n_FMZOraRry5TepY6daT-joabQS78pYa0v_Ftlk78ACaj9jYfr0yk-62RT02a14xPxGy-B6Qe5olqWOr3hO/s72-c/729456_60dc.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-1432744261298672887</id><published>2016-05-30T21:00:00.002-05:00</published><updated>2016-06-04T10:58:41.786-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="Rails"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails"/><title type='text'>Ruby on Rails &amp; Bootstrap - Construir una App de administrador de contactos</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hola amigos, aquí les dejo un videotutorial de cómo construir una app de administrador de contactos, usando Ruby on Rails y Bootstrap. Espero les guste.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/L9SuMpuBU9Q/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/L9SuMpuBU9Q?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/1432744261298672887/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/ruby-on-rails-bootstrap-construir-una.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1432744261298672887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1432744261298672887'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/ruby-on-rails-bootstrap-construir-una.html' title='Ruby on Rails &amp; Bootstrap - Construir una App de administrador de contactos'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/L9SuMpuBU9Q/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-3647637784817745421</id><published>2016-05-29T13:27:00.000-05:00</published><updated>2016-06-04T10:59:06.663-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="barcodes"/><category scheme="http://www.blogger.com/atom/ns#" term="Barcodes4J"/><category scheme="http://www.blogger.com/atom/ns#" term="JRuby"/><category scheme="http://www.blogger.com/atom/ns#" term="Rails"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>Generando Códigos de Barras con JRuby y Barcodes4J</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/05/1463748578barcode4j-logo.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/05/1463748578barcode4j-logo.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Ruby tiene&lt;/span&gt; un ecosistema muy vibrante que ofrece soluciones para casi todos los &lt;span class=&quot;&quot;&gt;problemas&lt;/span&gt; &lt;span class=&quot;&quot;&gt;comunes&lt;/span&gt;. Pero un área particular de retraso es la generación de código de barras. &lt;span class=&quot;&quot;&gt;Ruby&lt;/span&gt; &lt;span class=&quot;&quot;&gt;solamente&lt;/span&gt; &lt;span class=&quot;&quot;&gt;tiene soluciones para&lt;/span&gt; la generación de códigos QR, que son, sin duda, &lt;span class=&quot;&quot;&gt;muy popular, pero&lt;/span&gt; no gozan de aceptación masiva en segmentos de la industria. &lt;span class=&quot;&quot;&gt;Viejas simbologías de códigos de barras&lt;/span&gt;, como el Código 128, Data Matrix, y PDF417, gozan de &lt;span class=&quot;&quot;&gt;mayor aceptación&lt;/span&gt; en las aplicaciones de negocio que los códigos QR. ¿Qué debemos hacer si &lt;span class=&quot;&quot;&gt;necesitas generar&lt;/span&gt; un código 128 en una aplicación de Ruby / Rails&lt;span class=&quot;&quot;&gt;?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Afortunadamente&lt;/span&gt; tenemos una solución: JRuby. JRuby nos permite aprovechar &lt;span class=&quot;&quot;&gt;excelentes&lt;/span&gt; bibliotecas Java y utilizarlos en aplicaciones Ruby. Uno de estos es &lt;span class=&quot;&quot;&gt;la biblioteca&lt;/span&gt; Barcode4J que es popular en el mundo Java para generar códigos de barras. &lt;span class=&quot;&quot;&gt;Hoy en día&lt;/span&gt;, vamos a aprender cómo integrar y utilizar Barcode4J en Ruby. &lt;span class=&quot;&quot;&gt;Entonces empecemos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Aplicación Básica Rails&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Vamos a crear&lt;/span&gt; una aplicación Rails básica. La aplicación utilizará JRuby, Rails 4.2, &lt;span class=&quot;&quot;&gt;y SQLite&lt;/span&gt; como base de datos para mantener las cosas simples. En primer lugar, instalamos &lt;span class=&quot;&quot;&gt;JRuby&lt;/span&gt; con RVM o rbenv.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;&quot;&gt;Cambiar a&lt;/span&gt; JRuby &lt;span class=&quot;&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;&quot;&gt;gem install&lt;/span&gt;&lt;span class=&quot;&quot;&gt; la última&lt;/span&gt; gema de Rails. Ahora creamos una nueva &lt;span class=&quot;&quot;&gt;aplicación Rails&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, así:&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;span style=&quot;background-color: black;&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;    rails new barcode4j_rails -T                      &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Después de generar&lt;/span&gt; la aplicación, cambie al directorio de la aplicación y verifique &lt;span class=&quot;&quot;&gt;cómo está funcionando&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;span style=&quot;background-color: black;&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;    rails s                                           &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-bash&quot;&gt;&lt;code class=&quot; language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Vamos al navegador favorito a la dirección http://localhost:3000 y podrémos ver la página de inicio de nuestra aplicación Rails.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Integrando Barcode4J&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Ahora vamos a integrar Barcode4J en nuestra aplicación Rails. En primer lugar&lt;span class=&quot;&quot;&gt;, descargamos los archivos&lt;/span&gt; Barcode4J desde la página&amp;nbsp;&lt;a href=&quot;https://sourceforge.net/projects/barcode4j/files/barcode4j/Barcode4J%202.1/&quot;&gt;The Barcode4J Project&lt;/a&gt;.&amp;nbsp; &lt;span class=&quot;&quot;&gt;Vamos a utilizar&lt;/span&gt; la versión 2.1.0. Descargar barcode4j-2.1.0-bin.zip y descomprimir &lt;span class=&quot;&quot;&gt;el archivo&lt;/span&gt;. Copiar barcode4j.jar de la carpeta &lt;b&gt;build&lt;/b&gt; en lib/Barcode4J en nuestro directorio de la aplicación. También, copiar todos los archivos de la carpeta &lt;b&gt;lib&lt;/b&gt; en lib/Barcode4J.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Por último, nuestra estructura de directorio debería ser &lt;span class=&quot;&quot;&gt;como sigue&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;barcode4j_rails
  - app
  ...
  - lib
    - barcode4j
      - barcode4j.jar
      ...&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Ahora que tenemos&lt;/span&gt; &lt;span class=&quot;&quot;&gt;todos los archivos necesarios&lt;/span&gt; &lt;span class=&quot;&quot;&gt;en su lugar,&lt;/span&gt; &lt;span class=&quot;&quot;&gt;creamos una&lt;/span&gt; clase llamada barcode_generator.rb&amp;nbsp;en el directorio lib con el &lt;span class=&quot;&quot;&gt;siguiente código&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/vM89mrtL&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Hemos creado una clase sencilla que puede generar cuatro tipos de &lt;span class=&quot;&quot;&gt;códigos de barras&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, el envío de&lt;/span&gt; &lt;span class=&quot;&quot;&gt;enviar&lt;/span&gt; &lt;span class=&quot;&quot;&gt;de nuevo&lt;/span&gt; &lt;span class=&quot;&quot;&gt;un archivo de imagen&lt;/span&gt; en formato PNG. Todo lo que tenemos que pasar es la simbología y &lt;span class=&quot;&quot;&gt;los datos del &lt;/span&gt;código de barras. Vamos a detenernos en el funcionamiento interno de la clase.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;br /&gt;En primer lugar, cargamos todos los archivos .jar en &lt;span class=&quot;&quot;&gt;la classpath&lt;/span&gt;:&lt;/span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/gxbmhpJR&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Luego, importamos todas las referencias requeridas:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/0fykzQvq&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;A continuación, establezca el DPI de la imagen de código de barras para crear un objeto y &lt;span class=&quot;&quot;&gt;ByteArrayOutputStream&lt;/span&gt; &lt;span class=&quot;&quot;&gt;para mantener&lt;/span&gt; la imagen renderizada. A continuación, &lt;span class=&quot;&quot;&gt;crear un&lt;/span&gt; BitmapCanvas&lt;span class=&quot;&quot;&gt;&lt;/span&gt; sobre el cual se dibujará el código de barras. &lt;span class=&quot;&quot;&gt;Tal como:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/iFmG6641&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Inicializar la&lt;/span&gt; simbología de código de barras &lt;span class=&quot;&quot;&gt;según lo previsto&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/u0eqWYEc&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Configure&lt;/span&gt; &lt;span class=&quot;&quot;&gt;el generador de&lt;/span&gt; &lt;span class=&quot;&quot;&gt;código de barras para&lt;/span&gt; la configuración, tales como quiet zone y module width&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/PGHYVTHb&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;A continuación&lt;/span&gt;, invoque el método actual de generación de &lt;span class=&quot;&quot;&gt;código de barras&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;# Generate barcode 
bean.generateBarcode(canvas, data)
canvas.finish()&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Por último, convierta la imagen de código de barras en el flujo de bytes y retorne la imagen&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;# Convert image to byte array for streaming
bytes = bos.toByteArray
bos.close

return String.from_java_bytes(bytes)&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Ahora tenemos nuestro generador de código de barras en su lugar. Vamos a crear un inicializador &lt;span class=&quot;&quot;&gt;en config&lt;/span&gt;&lt;span class=&quot;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;&quot;&gt;inicializadores&lt;/span&gt;/barcode.rb para cargar la clase en Rails&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;require &#39;barcode_generator&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Probando el generador de Códigos de Barra&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Ahora vamos a crear una clase BarcodesController en app/controllaers con &lt;span class=&quot;&quot;&gt;el siguiente código&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/3JzZs7zu&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Se definieron dos acciones aquí. En primer lugar, una acción &lt;b&gt;index&lt;/b&gt; para representar la página real del generador de código de barras, lo que vamos a crear en breve. &lt;span class=&quot;&quot;&gt;En segundo lugar,&lt;/span&gt; &lt;span class=&quot;&quot;&gt;una acción&lt;/span&gt; &lt;b&gt;generate&lt;/b&gt; para llamar&amp;nbsp;y producir la imagen de código de barras. La acción &lt;b&gt;generate&lt;/b&gt; &lt;span class=&quot;&quot;&gt;invoca el método&lt;/span&gt; &lt;b&gt;BarcodeGenerate.generate&lt;/b&gt; con los parámetros de simbología y de datos de la &lt;span class=&quot;&quot;&gt;URL.&lt;/span&gt; Entonces, generar utiliza el método send_data para transmitir la imagen al &lt;span class=&quot;&quot;&gt;navegador.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora actualice config/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;routes.rb&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; para añadir rutas &lt;span class=&quot;&quot;&gt;a esas acciones&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot; language-undefined&quot;&gt;&lt;code class=&quot; language-undefined&quot;&gt;Rails.application.routes.draw do
  root &#39;barcodes#index&#39;
  get &#39;/barcodes/:symbology&#39; =&amp;gt; &#39;barcodes#generate&#39;
end&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;La última cosa a hacer es crear la interfaz de usuario actual para el generador de código de barras. Crear una vista en app/views/barcodes/index.html.erb &lt;span class=&quot;&quot;&gt;con el siguiente código&lt;/span&gt;&lt;span class=&quot;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/60yzcAyN&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;Sólo tendrá que crear&lt;/span&gt; un formulario con un campo para introducir datos y otro para &lt;span class=&quot;&quot;&gt;seleccionar&lt;/span&gt; la simbología de código de barras. Cuando hacemos clic en el botón &lt;span class=&quot;&quot;&gt;&quot;Generar&lt;/span&gt; código de barras &#39;, simplemente actualizamos &lt;span class=&quot;&quot;&gt;atributo src&lt;/span&gt; de la etiqueta img con &lt;span class=&quot;&quot;&gt;la URL&lt;/span&gt; relevente para generar &lt;span class=&quot;&quot;&gt;nuestra imagen&lt;/span&gt; &lt;span class=&quot;&quot;&gt;de código de barras&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/05/1463748787code128.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/05/1463748787code128.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Cambiar la simbología a &#39;Data Matrix&#39; y haga clic en &quot;&lt;span class=&quot;&quot;&gt;Generate Barcode&quot;de nuevo&lt;/span&gt;. Ahora debemos ver &lt;span class=&quot;&quot;&gt;un código de barras&lt;/span&gt; &lt;span class=&quot;&quot;&gt;Datamatrix&lt;/span&gt;. &lt;span class=&quot;&quot;&gt;Esto es lo que&lt;/span&gt; &lt;span class=&quot;&quot;&gt;parece&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/05/1463748809datamatrix.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/05/1463748809datamatrix.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;Fuente: &lt;a href=&quot;https://www.sitepoint.com/generate-barcodes-with-jruby-and-barcodes4j/&quot;&gt;Sitepoint&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class=&quot;&quot; id=&quot;result_box&quot; lang=&quot;es&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/3647637784817745421/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/generando-codigos-de-barras-con-jruby-y.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3647637784817745421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3647637784817745421'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/generando-codigos-de-barras-con-jruby-y.html' title='Generando Códigos de Barras con JRuby y Barcodes4J'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-4129901557261774741</id><published>2016-05-25T22:00:00.000-05:00</published><updated>2016-05-25T22:00:51.145-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coding"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>Ver desarrolladores codeando en vivo y en directo</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc9QF3JYT3MNMAHbRW5g-5BRhIDpSdZo4iWDa0LWWji9XUUMojqgt-5HxRGFKnhIYPc4JYJoz_mgCjR2W4I-PFNW5__SEEe1OwI2Ituew4dD1wlutji9jgPbhrVTQ1r38fTkzjrUgRkdiA/s1600/coding.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;209&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc9QF3JYT3MNMAHbRW5g-5BRhIDpSdZo4iWDa0LWWji9XUUMojqgt-5HxRGFKnhIYPc4JYJoz_mgCjR2W4I-PFNW5__SEEe1OwI2Ituew4dD1wlutji9jgPbhrVTQ1r38fTkzjrUgRkdiA/s320/coding.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Livecoding.tv es un sitio donde podemos ver en vivo y en directo a desarrolladores en todo el globo programando o realizando un proyecto, el cual hasta podeos participar en un Hangout con ellos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Podemos buscar el lenguaje de programación, framework o cualquier herramienta de desarrollo mediante el buscador incorporado.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sólamente les puedo decir que entren a la página y se registren y asi pueden aprender de los demás programadores en todo el mundo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Que lo disfruten!!!!&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/4129901557261774741/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/ver-desarrolladores-codeando-en-vivo-y.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/4129901557261774741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/4129901557261774741'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/ver-desarrolladores-codeando-en-vivo-y.html' title='Ver desarrolladores codeando en vivo y en directo'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc9QF3JYT3MNMAHbRW5g-5BRhIDpSdZo4iWDa0LWWji9XUUMojqgt-5HxRGFKnhIYPc4JYJoz_mgCjR2W4I-PFNW5__SEEe1OwI2Ituew4dD1wlutji9jgPbhrVTQ1r38fTkzjrUgRkdiA/s72-c/coding.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-7105161588984930557</id><published>2016-05-23T21:28:00.001-05:00</published><updated>2016-05-23T21:28:21.444-05:00</updated><title type='text'>Disponible Linux 4.6 para todos!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://i2.wp.com/nksistemas.com/wp-content/uploads/2016/05/linux4-6.png?w=666&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://i2.wp.com/nksistemas.com/wp-content/uploads/2016/05/linux4-6.png?w=666&quot; height=&quot;149&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Disponible Linux 4.6 para todos&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Linux Torwalds ha anunciado la próxima actualización de Línux con codename Charred Weasel (Comadreja Carbonizada), el cual trae varias mejoras a nivel de estabilidad y compatibilidad con el hardware.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esta es la lista de mejoras que trae esta nueva actualización:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;Soporte para USB 3.1 pudiendo tener velocidades de hasta 10 gbps, el doble que su antecesor 3.0.&lt;/li&gt;
&lt;li&gt;La wifi sufrió varias modificaciones, destacando ath10k (Atheros), con soporte para el chip qca4019 y ath9k_htc.&lt;/li&gt;
&lt;li&gt;Los drivers libres de las placas de video NVIDIA AMDGPU y NOUVEAU, 
han sido dotadas de más estabilidad y optimización, incorporando además 
soporte para aceleración 3D.&lt;/li&gt;
&lt;li&gt;Mejoras en el sistema de archivos&amp;nbsp;como &lt;strong&gt;Btfrs que&amp;nbsp;&lt;/strong&gt;incluye una nueva opción para rescatar particiones dañadas, &lt;strong&gt;ext4&lt;/strong&gt; mejora su escalibilidad (xattr) y &lt;strong&gt;F2FS &lt;/strong&gt;con mayor rendimiento, recordá&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;que es&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;el sistema creado por Samsung para el uso de memorias flash.&lt;/li&gt;
&lt;li&gt;AHCI soporta gestión de energía y elimono el soporte a dispositivos Intel Lewisburg SATA RAID viejos.&lt;/li&gt;
&lt;li&gt;Incorporación del protocolo de enrutamiento Batman (&lt;em&gt;Better Approach To Mobile Adhoc Networking&lt;/em&gt;),&amp;nbsp;soporte para el &lt;strong&gt;cifrado 802.1AE&lt;/strong&gt; a nivel de MAC y la adición de un nuevo subsistema del kernel de conexión multiplexor&lt;strong&gt; (KCM)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&amp;nbsp;Más información en &lt;a href=&quot;http://kernelnewbies.org/Linux_4.6&quot;&gt;KernelNewbies&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/7105161588984930557/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/disponible-linux-46-para-todos.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7105161588984930557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7105161588984930557'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2016/05/disponible-linux-46-para-todos.html' title='Disponible Linux 4.6 para todos!'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-678461451666179360</id><published>2011-11-13T14:36:00.001-05:00</published><updated>2011-11-13T14:37:47.253-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cannonical"/><category scheme="http://www.blogger.com/atom/ns#" term="Smartphones"/><category scheme="http://www.blogger.com/atom/ns#" term="Tablets"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Canonical extenderá Ubuntu para funcionar en smartphones y tablets</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: larger;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;La interfaz de Unity proveerá una plataforma común para ejecutar Ubuntu entre múltiples tamaños de equipos.&lt;br /&gt;&lt;br /&gt;Canonical planea expandir su distribución de Ubuntu Linux para que pueda ser usada en smartphones, tablets y otros equipos electrónicos de interfaz táctil, anunció el fundador de Canonical, Mark Shuttleworth.&lt;br /&gt;&lt;br /&gt;“Los usuarios cotidianos de computadoras están empezando a hacer sus operaciones a lo largo de un repertorio más amplio de dispositivos y factores de forma“, dijo Shuttleworth. Canonical quiere “llevar Ubuntu a todos los factores de forma de computación personal, en teléfonos, tablets y smart-screens”.&lt;br /&gt;&lt;br /&gt;Shuttleworth presentó sus planes el lunes en la Ubuntu Developer Summit, que tiene lugar esta semana en Orlando. En la conferencia, espera despertar el entusiasmo de los desarrolladores voluntarios, a quienes Canonical tendrá que ayudar a construir la plataforma y proveer aplicaciones para el sistema operativo ampliado.&lt;br /&gt;&lt;br /&gt;“Una aplicación para Ubuntu en el futuro tendrá múltiples personalidades. Cuando esté corriendo en una computadora de escritorio, tendrá una personalidad distinta a cuando esté corriendo en una tablet”, explicó Shuttleworth. “Desde el punto de vista del desarrollador, habrá una cantidad fenomenal de coherencia y reuso de las capacidades del núcleo en la aplicación”.&lt;br /&gt;&lt;br /&gt;Canonical enfrenta una competencia bastante dura en los mercados de tablets y smartphones, aún más allá del predominio actual de Apple en estos territorios. El sistema operativo para smartphones Android de Google, también basado en Linux, soporta casi al 40% de los smartphones en los Estados Unidos, de acuerdo a la última encuesta de ComScore. En tablets, Android aún no tiene una adopción tan amplia, aunque puede que Microsoft haga un ingreso significativo con su futuro lanzamiento del SO Windows 8, compatible con tablets.&lt;br /&gt;&lt;br /&gt;Para los desarrolladores y usuarios, Ubuntu puede ofrecer una cantidad de ventajas sobre las otras ofertas, dijo Shuttleworth. A diferencia de Google, que está adquiriendo al fabricante de móviles Motorola, Canonical no tiene planes de ofrecer sus propios smartphones, de modo que se podría considerar una alternativa más neutral ante los fabricantes de hardware. Shuttleworth también prometió un proceso de actualizaciones más uniforme usando el servicio Ubuntu One, reduciendo en potencia la fragmentación o los procesos desiguales de actualización que han pesado sobre Android a la fecha.&lt;br /&gt;&lt;br /&gt;Ubuntu también podría ofrecer una base de código unificada, dijo Shuttleworth. Un programador puede escribir una aplicación para Ubuntu y hacer que funcione, con modificaciones mínimas, en smartphones, tablets y computadoras de escritorio.&lt;br /&gt;&lt;br /&gt;Canonical se ha estado anticipando al proceso de preparar Ubuntu para esta movilización desde hace un tiempo, comentó Shuttleworth. El paso controversial de la compañía a la interfaz de Unity se realizó, en parte, porque Unity estaría mejor acondicionado para funcionar entre las distintas plataformas.&lt;br /&gt;&lt;br /&gt;“El diseño básico de Unity nos coloca en una buena posición para construir una familia coherente de interfaces. La estructura básica de Unity podrá alcanzar a todos estos factores de forma, reteniendo cierta coherencia para los usuarios, y respetando las características únicas de estos factores de formna, dijo Shuttleworth.&lt;br /&gt;&lt;br /&gt;La compañía también desarrolló una versión de Ubuntu para correr sobre procesadores ARM, algo que será esencial para funcionar en dispositivos con chips de diseño ARM.&lt;br /&gt;&lt;br /&gt;Canonical no ha establecido un mapa de ruta o ninguna fecha específica para lanzar este software, pero esperan que las versiones listas para móviles del sistema operativo empiecen a aparecer para 2014. Gran parte del trabajo en la interfaz táctil ya ha sido completado, y la compañía espera que los desarrolladores en la conferencia identifiquen el trabajo que queda por hacer.&lt;br /&gt;&lt;br /&gt;En abril, Shuttleworth expresó poco interés en el creciente mercado de tablets, prefiriendo en cambio preparar a Ubuntu para netbooks, además de las versiones estándar del sistema para desktops y servidores.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: larger;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fuente: PcWorld México&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/678461451666179360/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/11/canonical-extendera-ubuntu-para.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/678461451666179360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/678461451666179360'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/11/canonical-extendera-ubuntu-para.html' title='Canonical extenderá Ubuntu para funcionar en smartphones y tablets'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-7050697877671330356</id><published>2011-11-13T14:20:00.001-05:00</published><updated>2011-11-13T14:31:36.569-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grandr"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="resolución monitor"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="Xrandr"/><title type='text'>Repara resoluciones de pantalla y mas cosas con Xrandr</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Xrandr (X Resize &amp;amp; Rotate), es una utilidad de línea de comandos disponible en el sistema Linux. Con esta herramienta podemos configurar todos los parámetros de la resolución de pantalla así como añadir nuevas resoluciones. Al funcionar desde la linea de comandos, es muy útil si hay algún problema con la configuración de la pantalla o tarjeta de vídeo y no podemos entrar en modo gráfico. También dispone de una interfaz gráfica llamada &lt;a href=&quot;http://www.linuxzone.es/&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;Grandr&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;, que nos permite configurar fácilmente las opciones de pantalla.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/grandr.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;246&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/grandr.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el caso que nos ocupa, no tenemos acceso al modo gráfico, por lo que lo primero es saber nuestras resoluciones y cual estamos utilizando, para ello tecleamos en consola &lt;a href=&quot;http://www.linuxzone.es/&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;xrandr&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;, que nos dará una salida parecida a esta:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrand1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;209&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrand1.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como podemos ver en esta salida tenemos toda la información de nuestra tarjeta de vídeo en mi caso solo tengo una conectada &lt;strong&gt;LVDS1&lt;/strong&gt;.&lt;br /&gt;Una forma fácil de ver si tenemos algún problema de resolución es fijándonos en la linea marcada con el signo más “&lt;strong&gt;+&lt;/strong&gt;“, dicho símbolo nos indica que esa es la resolución recomendada y el asterisco “&lt;strong&gt;*&lt;/strong&gt;“, nos dice la resolución que estamos utilizando. En este caso los dos &lt;a href=&quot;http://www.linuxzone.es/2008/05/22/mapas-conceptuales-y-esquemas-en-gnulinux/&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;símbolos&lt;/span&gt;&lt;/a&gt; están situados en la misma linea, por lo que todo está correcto. Pero en el caso de que no sea así y queramos cambiar o crear otra una nueva resolución soportada por nuestra tarjeta, procederemos de la siguiente manera.&lt;/div&gt;
Para crear una nueva resolución primero debemos utilizar &lt;strong&gt;cvt&lt;/strong&gt;, seguido de la resolución que queramos añadir, con esto conoceremos los modos, ‘ Modeline’ de esa resolución para poder añadirlos luego.&lt;br /&gt;
&lt;br /&gt;
$ cvt 320 768&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ya se que la resolución que pongo es un tanto extraña, pero quiero mostrar que se puede forzar cualquier resolución soportada.&lt;/div&gt;
La salida de los modos de la resolución elegida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrandr5.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;209&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrandr5.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Con esta información ya podemos cargar la nueva resolución. Para ello añadimos el ‘&lt;a href=&quot;http://www.linuxzone.es/&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;Modeline&lt;/span&gt;&lt;/a&gt;‘ al siguiente comando para crear el modo:&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;$ xrandr --newmode &quot;320x768_60.00&quot;   19.75  320 336 368 416  768 771 781 798 -hsync +vsync&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Vemos que si hacemos de nuevo &lt;strong&gt;xrandr&lt;/strong&gt; ya nos aparece la nueva resolución.&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrand2.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;209&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrand2.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;Y añadimos el modo creado a la tarjeta conectada que en este caso es LVDS1:&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;code&gt;$ xrandr --addmode LVDS1 320x768_60.00&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Con esto ya tenemos agregada esta extraña configuración.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrand3.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;209&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrand3.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si nos damos cuenta de que ese modo no es correcto o simplemente no funciona, podemos eliminarlo con &lt;code&gt;&lt;strong&gt;--rmmode&lt;/strong&gt;&lt;/code&gt;:&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;$ xrandr --rmmode LVDS1 320x768_60.00&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para predeterminar esta nueva &lt;a href=&quot;http://www.linuxzone.es/2011/09/30/soluciona-problemas-con-el-grub-con-boot-repair/&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;configuración&lt;/span&gt;&lt;/a&gt; o cualquiera de las que ya tengamos, (no voy a usar la creada anteriormente por motivos obvios), tecleamos:&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;$ xrandr --output LVDS1 --mode 1024x768&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Como podéis ver ahora el asterisco está situado en 1024×768:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrandr4.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;209&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/10/xrandr4.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el caso de querer solucionar un error “&lt;strong&gt;out of range&lt;/strong&gt;” o fuera de rango, que suele venir porque la tasa de refresco del monitor es diferente a la configurada por defecto. Esto puede darse cuando actualizamos a una distribución que no reconoce un monitor CRT adecuadamente, por ejemplo. Para solucionarlo solo tendréis que añadir la tasa soportada por el monitor. Para hacer esto hay que agregarla a la linea anterior con &lt;code&gt;&lt;strong&gt;--rate&lt;/strong&gt;&lt;/code&gt;:&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;$ xrandr --output LVDS1 --mode 1024x768 --rate 60,3&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez lo tenemos configurado todo necesitamos guardar estos cambios para que sean permanentes, para ello tenemos que añadirlos editando el archivo /Default como &lt;a href=&quot;http://www.linuxzone.es/2011/10/26/haciendo-limpieza-en-linux-con-bleachbit/&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;root&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;:&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;# nano /etc/gdm/Init/Default&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Buscamos las siguientes lineas…&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
PATH=”/usr/bin:$PATH”&lt;br /&gt;OLD_IFS=$IFS&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
… Y debajo de ellas añadimos todos los pasos que ya habíamos realizado desde la terminal, en el caso de la configuración de ejemplo que creé antes, sería añadir lo siguiente:&lt;/div&gt;
&lt;blockquote&gt;
&lt;code&gt;xrandr --newmode &quot;320x768_60.00&quot;   19.75  320 336 368 416  768 771 781 798 -hsync +vsync&lt;br /&gt;xrandr --addmode LVDS1 320x768_60.00&lt;br /&gt;xrandr --output LVDS1 --mode 320x768&lt;/code&gt;&lt;/blockquote&gt;
Solo nos queda guardar y reiniciar con la nueva configuración.&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esto son solo algunos ejemplos de lo que se puede hacer con este comando, pero su potencial va más allá, pudiendo incluso configurar diferentes tarjetas con diferentes monitores creando una configuración personalizada para cada uno de ellos, también se pueden crear pantallas virtuales o intercambiar pantallas, etc…&lt;/div&gt;
&lt;br /&gt;
Para más información el comando &lt;a href=&quot;http://www.linuxzone.es/2011/02/19/comandos-y-curiosidades-en-tu-terminal/&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;man xrandr&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; es nuestro amigo.&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/7050697877671330356/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/11/repara-resoluciones-de-pantalla-y-mas.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7050697877671330356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7050697877671330356'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/11/repara-resoluciones-de-pantalla-y-mas.html' title='Repara resoluciones de pantalla y mas cosas con Xrandr'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-1690414921709078935</id><published>2011-11-13T14:12:00.001-05:00</published><updated>2011-11-13T14:15:56.665-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu Linux"/><title type='text'>Conoce mejor tu sistema através de sus Logs</title><content type='html'>&lt;div align=&quot;left&quot; class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2008/04/terminal.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2008/04/terminal.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una de las primeras preguntas que te vienen a la cabeza cuando tienes un &lt;a href=&quot;http://www.linuxzone.es/2011/10/28/repara-resoluciones-de-pantalla-y-mas-cosas-con-xrandr/&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;problema&lt;/span&gt;&lt;/a&gt; es, ¿por qué ha pasado esto?. Lógicamente conociendo la respuesta a esa pregunta los problemas son mucho más fáciles de solucionar.&lt;br /&gt;Lo que a veces olvidamos es que Linux nos puede contestar esa pregunta mediante “&lt;a href=&quot;http://www.linuxzone.es/?s=log&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;logs&lt;/span&gt;&lt;/a&gt;“. Estos archivos contienen la información de lo que sucede en nuestro sistema proporcionándonos una gran variedad de datos.&lt;span id=&quot;more-12671&quot;&gt;&lt;/span&gt;&lt;/div&gt;
Todos estos archivos se encuentran ordenados en la carpeta &lt;strong&gt;/var/log/&lt;/strong&gt; y hay unos cuantos, así que voy a mostraros algunos de los más útiles, aunque como digo hay muchos más.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;.- /var/log/kern.log:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Guarda un registro de los mensajes del núcleo (&lt;a href=&quot;http://www.linuxzone.es/2011/10/27/%c2%bfque-novedades-nos-trae-el-kernel-3-1/&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;Kernel&lt;/span&gt;&lt;/a&gt;).&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/syslog:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Registro de mensajes del sistema y de sus programas.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/dmesg:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Información de arranque del sistema y conexiones de hardware principalmente.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/debug:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Información de depuración de los programas.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/Xorg.0.log:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Información sobre el entorno gráfico.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/boot.log:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Información del arranque&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/fontconfig.log:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Configuración de las fuentes del &lt;a href=&quot;http://www.linuxzone.es/&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;sistema&lt;/span&gt;&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/mail.log:  &lt;/em&gt;&lt;/strong&gt;&lt;em&gt; Logs del servidor de correo.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt; &lt;em&gt; .- /var/log/auth.log:   &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;Conexiones al sistema incluidos los intentos fallidos y los accesos como root.&lt;/em&gt;&lt;br /&gt;
Si queremos ver al instante todo lo que esta pasando en nuestro sistema, solo hay que añadir los logs que queramos monitorizar al siguiente comando:&lt;br /&gt;
&lt;blockquote&gt;
&lt;code&gt;&lt;strong&gt;tail -f --retry&lt;/strong&gt; /var/log/syslog /var/log/auth.log&lt;/code&gt;&lt;/blockquote&gt;
Podemos acceder a todos estos archivos con nuestro gestor de archivos, desde una terminal añadiendo el comando &lt;strong&gt;cat&lt;/strong&gt; delante o con cualquier editor como &lt;a href=&quot;http://www.linuxzone.es/&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;nano&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como curiosidad os muestro el log de &lt;strong&gt;auth.log&lt;/strong&gt; de mi portátil, con el que he tenido problemas y entré al sistema de diferentes formas, algunas de ellas incluso fallidas por problemas con el teclado.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.linuxzone.es/wp-content/uploads/2011/11/loguser-300x185.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.linuxzone.es/wp-content/uploads/2011/11/loguser-300x185.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Aunque esto es conocido por casi todos nunca está de más recordarlo ya que es al primer sitio donde se debe acudir para intentar resolver un problema, o solo recabar información y aportarla para facilitar el trabajo en cualquier &lt;a href=&quot;http://www.adslzone.net/forum26.html&quot;&gt;&lt;span style=&quot;color: #1e5b7e;&quot;&gt;foro especializado&lt;/span&gt;&lt;/a&gt;.﻿&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;left&quot; class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
﻿&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/1690414921709078935/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/11/conoce-mejor-tu-sistema-atraves-de-sus.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1690414921709078935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1690414921709078935'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/11/conoce-mejor-tu-sistema-atraves-de-sus.html' title='Conoce mejor tu sistema através de sus Logs'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-3825640493942657765</id><published>2011-09-11T17:03:00.000-05:00</published><updated>2011-09-11T17:03:08.970-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu 11.10"/><title type='text'>Primera beta de Ubuntu 11.10</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.cwv.com.ve/wp-content/uploads/2011/09/ubuntu-300x300.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; width=&quot;300&quot; src=&quot;http://www.cwv.com.ve/wp-content/uploads/2011/09/ubuntu-300x300.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Cada vez queda menos para la disponibilidad definitiva de Ubuntu 11.10. La primera beta de esta versión del sistema operativo) está disponible, aunque se espera que haya una segunda antes del lanzamiento definitivo.&lt;br /&gt;
&lt;br /&gt;
Ha empezado la cuenta atrás para el lanzamiento definitivo de Ubuntu 11.10, puesto que está disponible la primera beta de la próxima versión del sistema operativo de código fuente abierto y gratuito de Canonical.&lt;br /&gt;
&lt;br /&gt;
Se espera, de hecho, que Ubuntu 11.10 haga su aparición oficial en el mercado el próximo 13 de octubre pero, hasta entonces, deberá aparecer una segunda versión beta, que está previsto que se libere el próximo 22 de septiembre.&lt;br /&gt;
&lt;br /&gt;
La versión beta de Ubuntu 11.10 puede descargarse desde la web. Algunos de los cambios que se pueden contemplar en esta versión, y agrupadas bajo el paraguas de Oneiric Ocelot, es que la imagen en el DVD es más pequeña, tal y como habían pedido los usuarios, ocupando apenas 1,5 GB. En esta imagen se incluyen todos los idiomas, además de aplicaciones como Inkscape, GIMP, PiTiVi y LibreOffice.&lt;br /&gt;
&lt;br /&gt;
Además, en esta beta también se incluyen una serie de imágenes denominadas Ubuntu Core, que incluye las partes esenciales del software y cuya finalidad es que pueda emplearse como base para distribuciones y productos Ubuntu personalizados.&lt;br /&gt;
&lt;br /&gt;
Además, gracias a Oneiric Ocelot se pueden instalar librerías y aplicaciones de 32 bits para operar en sistemas de 64 bits, de manera que los usuarios no tendrán que instalar otras herramientas para que estos productos funcionen.&lt;br /&gt;
&lt;br /&gt;
Ubuntu 11.10 también incluye aplicaciones como Thunderbird para el correo electrónico, Déjà Dup para realizar backup y Gwibber para microblogging.&lt;br /&gt;
&lt;br /&gt;
IDG.es</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/3825640493942657765/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/09/primera-beta-de-ubuntu-1110.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3825640493942657765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3825640493942657765'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/09/primera-beta-de-ubuntu-1110.html' title='Primera beta de Ubuntu 11.10'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-1340209285846196857</id><published>2011-08-07T13:38:00.000-05:00</published><updated>2011-08-07T13:38:14.671-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="sshdroid"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Cómo conectar tu Android y tu PC Linux usando el wifi</title><content type='html'>El otro día me preguntaba si habría una forma de &lt;b&gt;conectar mi celular Android a mi PC de escritorio a través del wifi&lt;/b&gt;, evitando así el uso de cables y del inservible (al menos para estos casos) bluetooth. Mejor aún, quería saber si había alguna &lt;b&gt;forma &quot;segura&quot; de hacerlo, a través de SSH&lt;/b&gt;. Bueno, sí existe y es una pavada.&lt;br /&gt;
&lt;br /&gt;
Pasos a seguir&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1.-&lt;/b&gt; Instalar &lt;a href=&quot;https://market.android.com/details?id=berserker.android.apps.sshdroid&amp;amp;feature=search_result&quot;&gt;&lt;span style=&quot;color: #009ecb;&quot;&gt;SSHDroid&lt;/span&gt;&lt;/a&gt; en tu celular.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2.-&lt;/b&gt; Asegurate de estar conectado a la red wifi en la que se encuentra tu PC.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3.-&lt;/b&gt; Iniciar SSHDroid. Vas a ver que te muestra la dirección que tenés que ingresar en tu explorador de archivos favorito (Nautilus, Thunar, PCManFM, etc.). También podrías usar openSSH desde un terminal, eso depende de tus gustos.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://ssl.gstatic.com/android/market/berserker.android.apps.sshdroid/ss-320-0-5&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://ssl.gstatic.com/android/market/berserker.android.apps.sshdroid/ss-320-0-5&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;4.-&lt;/strong&gt; La primera vez te va a pedir que ingreses una contraseña. Por defecto, viene con &quot;admin&quot;. No obstante, es altamente recomendable cambiarla. La contraseña la configurás en tu teléfono (ya que es tu teléfono el que está funcionando como servidor). En SSHDroid, seleccioná Options y allí vas a poder configurar tu contraseña y otras cuestiones importantes (como la posibilidad de que SSHDroid arranque al iniciarse Android, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5.-&lt;/b&gt; Listo. Ya podés acceder a tu teléfono sin cables y en forma segura (ya que estás usando &lt;a href=&quot;http://es.wikipedia.org/wiki/Secure_Shell&quot;&gt;&lt;span style=&quot;color: #009ecb;&quot;&gt;SSH&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;6.-&lt;/b&gt; Para terminar la conexión, no olvides seleccionar Quit en SSHDroid.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;﻿&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/1340209285846196857/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/08/como-conectar-tu-android-y-tu-pc-linux.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1340209285846196857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/1340209285846196857'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/08/como-conectar-tu-android-y-tu-pc-linux.html' title='Cómo conectar tu Android y tu PC Linux usando el wifi'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-6968631452914718826</id><published>2011-08-07T13:23:00.000-05:00</published><updated>2011-08-07T13:23:50.209-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="danorcia"/><category scheme="http://www.blogger.com/atom/ns#" term="Gnome"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>DaNorcia GNOME Theme Pack</title><content type='html'>La verdad es que me recuerda la PC del trabajo (uso Windows) pero no está nada mal el tema, además demuestra la versatilidad de GNOME.&lt;br /&gt;
El pack trae:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Tema GTK&lt;/li&gt;
&lt;li&gt;Tema Metacity&lt;/li&gt;
&lt;li&gt;Tema Emerald&lt;/li&gt;
&lt;li&gt;Iconos + Cursores&lt;/li&gt;
&lt;li&gt;Perfil para Compiz (no recomendado en Natty)&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://i243.photobucket.com/albums/ff135/Ubuntips/wallpapers/Ubuntips-new/144147-1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;http://i243.photobucket.com/albums/ff135/Ubuntips/wallpapers/Ubuntips-new/144147-1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;﻿&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;﻿Licencia: GPL&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Descarga: &lt;a href=&quot;http://home.teletu.it/danorcia/Index.html&quot;&gt;http://home.teletu.it/danorcia/Index.html&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/6968631452914718826/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/08/danorcia-gnome-theme-pack.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6968631452914718826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6968631452914718826'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/08/danorcia-gnome-theme-pack.html' title='DaNorcia GNOME Theme Pack'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-7139408854426968952</id><published>2011-07-01T21:06:00.000-05:00</published><updated>2011-07-01T21:06:32.070-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Trucos Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu tweak"/><title type='text'>&amp; trucos para usuarios avanzados de Ubuntu (1. parte)</title><content type='html'>A continuación expondremos 15 trucos que puedes probar si eres un ávido usuario de Ubuntu:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1. Se más rápido que un rayo con la línea de comandos&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Puedes usar atajos de teclado y otros trucos de la línea de comandos para entrar comandos de una manera más rápida y eficiente. Ya debes saber que la tecla “Tab” completa comandos parciales e incluso nombres de archivos y directorios.&lt;br /&gt;
&lt;br /&gt;
Esta es una lista de algunos otros atajos de teclado que puedes usar en el terminal:&lt;br /&gt;
&lt;br /&gt;
Ctrl-a Mueve el cursor al principio de la línea&lt;br /&gt;
Ctrl-e Mueve el cursor al final de la línea&lt;br /&gt;
Alt-] x Mueve el cursor hacia adelante hasta la siguiente ocurrencia de x&lt;br /&gt;
Alt-Ctrl-] x Mueve el cursor hacia atrás hasta la anterior ocurrencia de x&lt;br /&gt;
Ctrl-u Borra desde el cursor hasta el inicio de la línea&lt;br /&gt;
Ctrl-k Borra desde el cursor hasta el final de la línea&lt;br /&gt;
Ctrl-w Borra desde el cursor hasta el principio de la palabra&lt;br /&gt;
Ctrl-y Pega texto del portapapeles&lt;br /&gt;
Ctrl-l Despeja la pantalla dejando la línea actual en la parte superior de la pantalla&lt;br /&gt;
Ctrl-x Deshace los últimos cambios&lt;br /&gt;
Alt-r Deshace todos los cambios de la línea&lt;br /&gt;
Alt-Ctrl-e Expande la línea de comandos&lt;br /&gt;
Ctrl-r Incremental de búsqueda inversa del historial&lt;br /&gt;
Alt-p No-Incremental de búsqueda inversa del historial&lt;br /&gt;
!! Ejecuta el último comando del historial&lt;br /&gt;
!abc Ejecuta el último comando en el historial que empieza por abc&lt;br /&gt;
!n Ejecuta el enésimo comando en el historial&lt;br /&gt;
^abc^xyz Reemplaza la primera ocurrencia que empiece por abc con xyz y luego la ejecuta.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. Lanza aplicaciones con el teclado&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Puedes utilizar aplicaciones como Launchy o Gnome-Do que hacen más fácil poder ejecutar aplicaciones con solo escribir unos pocos carácteres del nombre de la aplicación.&lt;br /&gt;
&lt;br /&gt;
O puedes usar gconf editor (Alt+F2 y escribe gconf-editor y pulsa enter), navega a apps &amp;gt; metacity &amp;gt; global keybindings, haz doble clic en cualquiera de los run_command_N y escribe el atajo de teclado que quieres asignar a la aplicación y toma nota del número N.&lt;br /&gt;
&lt;br /&gt;
Ves entonces a apps &amp;gt; metacity &amp;gt; keybindings_commands y haz doble clic en command_N (N es el número que has usado antes) y escribe en el comando que quieras ejecutar. Por ejemplo, si quieres ejecutar Firefox deberías escribir firefox.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://static.blogo.it/tecnologiablog/globalkeybindings.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;80&quot; i$=&quot;true&quot; src=&quot;http://static.blogo.it/tecnologiablog/globalkeybindings.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://static.blogo.it/tecnologiablog/globalkeybindings2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;77&quot; i$=&quot;true&quot; src=&quot;http://static.blogo.it/tecnologiablog/globalkeybindings2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;3. Empieza donde lo dejaste&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://static.blogo.it/tecnologiablog/remember.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;91&quot; i$=&quot;true&quot; src=&quot;http://static.blogo.it/tecnologiablog/remember.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Puedes hacer que Ubuntu recuerde las aplicaciones que tenías abiertas cuando cerraste la última sesión, así cuando vuelvas a entrar encontrarás todas esas aplicaciones ejecutándose y podrás seguir donde los dejaste.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para conseguirlo ves a System &amp;gt; Preferences &amp;gt; Startup Applications, allí ves a la pestaña de opciones y marca “Automatically remember running applications when logging out”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;4. Crea una partición separada de la Home de Ubuntu&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://static.blogo.it/tecnologiablog/mountashome.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;157&quot; i$=&quot;true&quot; src=&quot;http://static.blogo.it/tecnologiablog/mountashome.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Las nuevas versiones de Ubuntu llegan cada seis meses. Aunque puedes actualizar a la última versión desde el gestor de actualizaciones, a veces la actualización no funciona tal y como esperábamos y muchos usuarios prefieren hacer una instalación limpia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La desventaja es que con una instalación limpia pierdes todos los datos de tu carpeta de inicio. Para evitar esto puedes crear una partición separada para tu carpeta Home cuando estás instalando Ubuntu, dimensiónala según tus necesidades y cuando decidas reinstalar Ubuntu la próxima vez, simplemente específica esta partición como la partición Home (eligiendo /home como el punto de montaje).&lt;br /&gt;
&lt;br /&gt;
Todos tus archivos de la partición Home se guardarán incluso después de una instalación limpia.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;5. Actualiza e instala Ubuntu sin conexión de internet&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://static.blogo.it/tecnologiablog/aptoncd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;234&quot; i$=&quot;true&quot; src=&quot;http://static.blogo.it/tecnologiablog/aptoncd.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;Hay varias maneras de conseguirlo, la más fácil de todas es usar APTonCD. APTonCD te permite crear CD y DVD que contengan todos los paquetes que quieras, con los cuales puedes instalar el software en un ordenador que no disponga de conexión a internet.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
APTonCD necesita que tengas conexión a internet o todos los paquetes descargados para crear el disco de instalación. Una vez ese disco ya está creado ya no necesitas conexión a internet para instalarlo. Inserta el disco y usa apt-get tal y como lo harías normalmente.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;6. Utiliza PPAs, instala las últimas versiones de software&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres estar actualizado en todo momento, debes buscar Personal Package Archives para tu software favorito en Launchpad y añadirlos a tus fuentes de instalación de software.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/7139408854426968952/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/07/trucos-para-usuarios-avanzados-de.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7139408854426968952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7139408854426968952'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/07/trucos-para-usuarios-avanzados-de.html' title='&amp; trucos para usuarios avanzados de Ubuntu (1. parte)'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-6915812838610230308</id><published>2011-06-26T17:48:00.000-05:00</published><updated>2011-06-26T17:48:42.712-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="oneiric ocelot"/><category scheme="http://www.blogger.com/atom/ns#" term="Synaptic"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Synaptic no hará parte de Ubuntu Oneiric Ocelot</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.cualesmiip.com/media/image/noticias/16690_Foto_1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; i$=&quot;true&quot; src=&quot;http://www.cualesmiip.com/media/image/noticias/16690_Foto_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Efectivamente señores, Synaptic ya no formará parte de la próxima versión de Ubuntu Oneiric Ocelot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;La decisión ya está tomada. La gente de Canonical ha optado por prescindir del sistema de gestión de paquetes de Debian GNU/Linux Synaptic que ha estado presente durante estos últimos años en la distro de Linux Ubuntu en favor del más moderno Centro de Software de Ubuntu.&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Es cierto que (de momento) el Centro de Software de Ubuntu no es tan completo como Synaptic (por ejemplo carece de una opción de downgrade que permita volver a una versión anterior de una aplicación ) pero la decisión ya está tomada. Además el equipo de desarrollo de Ubuntu suele ser bastante radical en los cambios…&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Así pues nos viene una versión de Ubuntu (Oneiric Ocelot) con importantes cambios como el que les comento en esta entrada y la salida del también mítico editor de imágenes Gimp. Veremos cómo es la bienvenida del usuario final…&lt;/div&gt;&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;﻿&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/6915812838610230308/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/synaptic-no-hara-parte-de-ubuntu.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6915812838610230308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6915812838610230308'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/synaptic-no-hara-parte-de-ubuntu.html' title='Synaptic no hará parte de Ubuntu Oneiric Ocelot'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-7206426568708731403</id><published>2011-06-26T17:29:00.000-05:00</published><updated>2011-06-26T17:29:01.044-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Samba"/><category scheme="http://www.blogger.com/atom/ns#" term="SMB"/><category scheme="http://www.blogger.com/atom/ns#" term="Synaptic"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Instalar SAMBA en Ubuntu 11.04</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Samba es una implementación del protocolo de red SMB/CIFS en sistema Unix. Provee soporte de plataforma cruzada para compartir archivos e impresoras entre diferentes sistemas operativos (Windows y Linux por ejemplo). Samba también puede funcionar como con controlador de dominio estilo NT4, y puede integrarse dominios NT4 y Active Directory. Samba puede correr en practicamente todas las distribuciones de Linux y muchos otros OS como Windows, Mac, etc.&lt;/div&gt;&lt;br /&gt;
Con Samba puedes acceder a las carpetas e impresoras del otro equipo al que tiene otro sistema operativo, dentro de la red donde te encuentras.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Instalando Samba desde el Administrador de Paquetes Synaptic&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
1. Abra el Administrador de Paquetes Synaptic y busque el paquete &quot;Samba&quot;.&lt;br /&gt;
2. Marque el paquete de instalación y luego clic en &quot;Aplicar&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.myapitips.com/wp-content/uploads/2011/05/s1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;182&quot; i$=&quot;true&quot; src=&quot;http://www.myapitips.com/wp-content/uploads/2011/05/s1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;3. Espere hasta que el proceso de instalación termine (toma mas o menos 2 minutos)&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Instalando desde el Centro de Software&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;1. Abra el Centro de Software de Ubuntu y busque el software &quot;Samba&quot;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;2. Clic en &quot;Instalar&quot; y espere un momento para que sea instalado.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.myapitips.com/wp-content/uploads/2011/05/s2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;118&quot; i$=&quot;true&quot; src=&quot;http://www.myapitips.com/wp-content/uploads/2011/05/s2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;strong&gt;Instalando desde Terminal&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Abra el terminal (presione ALT+CTRL+T) y escriba el siguiente comando&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install samba&lt;br /&gt;
&lt;br /&gt;
En otro tutorial Explicaré como configurar una impresora en Ubuntu para compartir en una red con Windows.&lt;br /&gt;
&lt;br /&gt;
Saludos!!!﻿</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/7206426568708731403/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/instalar-samba-en-ubuntu-1104.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7206426568708731403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7206426568708731403'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/instalar-samba-en-ubuntu-1104.html' title='Instalar SAMBA en Ubuntu 11.04'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-6238360301534179235</id><published>2011-06-24T13:29:00.000-05:00</published><updated>2011-06-24T13:29:40.670-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gnome"/><category scheme="http://www.blogger.com/atom/ns#" term="Gnome Mplayer"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Mplayer"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Gnome Mplayer</title><content type='html'>Hola a todos:&lt;br /&gt;
&lt;br /&gt;
Si depronto estan cansados o aburridos del reproductor de multimedia que trae por defecto el Ubuntu, pues aquí les traigo una alternativa para que la prueben y den el veredicto.&lt;br /&gt;
&lt;br /&gt;
Se trata de Mplayer, un reproductor que es de apariencia básica pero que se acomoda al escritorio de Gnome y que consume pocos recursos.&lt;br /&gt;
&lt;br /&gt;
Las opciones de las que disponemos en éste reproductor no son extremadamente avanzadas aunque sí las necesarias para controlar brillo, subtítulos, canales de audio… además de tener soporte para DVD y MKV. Como “puntito” avanzado tendremos posibilidad de buscar carátulas de discos en Amazon e información de artistas y álbums.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://bitelia.com/files/2011/06/Gnome-Mplayer.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; i$=&quot;true&quot; src=&quot;http://bitelia.com/files/2011/06/Gnome-Mplayer.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
No es la panacea pero seguro que a más de uno le sirve como reproductor de urgencia cuando el “Reproductor de películas” de Ubuntu falla.&lt;br /&gt;
&lt;br /&gt;
Información básica:&lt;br /&gt;
Plataforma: Linux&lt;br /&gt;
Licencia: GPLv2&lt;br /&gt;
Precio: Gratuito&lt;br /&gt;
Enlace de descarga: &lt;a href=&quot;http://code.google.com/p/gnome-mplayer/&quot;&gt;Gnome Mplayer&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/6238360301534179235/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/gnome-mplayer.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6238360301534179235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/6238360301534179235'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/gnome-mplayer.html' title='Gnome Mplayer'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-7556499830871278326</id><published>2011-06-21T18:02:00.000-05:00</published><updated>2011-06-21T18:02:11.945-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox 5"/><title type='text'>Disponible Firefox 5</title><content type='html'>Hola a todos:&lt;br /&gt;
&lt;br /&gt;
Ya está disponible la quinta versión de Firefox, la cual trae muchas mejoras y cambio en la apariencia.&lt;br /&gt;
&lt;br /&gt;
Visiten: www.mozilla.org</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/7556499830871278326/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/disponible-firefox-5.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7556499830871278326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/7556499830871278326'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/disponible-firefox-5.html' title='Disponible Firefox 5'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-3873139974665006199</id><published>2011-06-18T19:12:00.000-05:00</published><updated>2011-06-18T19:12:46.861-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Felíz día del padre"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="padre"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Felíz Día del Padre</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEXh77DQ-YsITzU1hxj88bq-3GSTkRRr0zMOftnSQQXSTxXuQNd8L44EHc-36JT4zRRV6y_zrxhoDvVw3BsQOuE0WHV_vxITcZb_lBLH7Zm0Nl_oibOEVZYmhdYlbYyTvbrz_LbJx5Izt/s400/papa+dia+del+padre.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEXh77DQ-YsITzU1hxj88bq-3GSTkRRr0zMOftnSQQXSTxXuQNd8L44EHc-36JT4zRRV6y_zrxhoDvVw3BsQOuE0WHV_vxITcZb_lBLH7Zm0Nl_oibOEVZYmhdYlbYyTvbrz_LbJx5Izt/s400/papa+dia+del+padre.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Hola amigos del foro, &lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Mi Mundo Ubuntu&lt;/b&gt;&lt;/span&gt; les desea a todos los papás&amp;nbsp; y a los que van a hacer, un felíz día. Gracias por sus esfuerzos que tienen con nosotros, por regalarnos la vida, la comprensión y acompañarnos en este camino arduo de la vida. Gracias por aconsejarnos y darnos apoyo.&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;Felíz Día!!!!!&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Atentamente,&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Grupo de Mi Mundo Ubuntu&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/3873139974665006199/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/feliz-dia-del-padre.html#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3873139974665006199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/3873139974665006199'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/feliz-dia-del-padre.html' title='Felíz Día del Padre'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEXh77DQ-YsITzU1hxj88bq-3GSTkRRr0zMOftnSQQXSTxXuQNd8L44EHc-36JT4zRRV6y_zrxhoDvVw3BsQOuE0WHV_vxITcZb_lBLH7Zm0Nl_oibOEVZYmhdYlbYyTvbrz_LbJx5Izt/s72-c/papa+dia+del+padre.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9110135141168689338.post-5359827276821032816</id><published>2011-06-18T08:35:00.000-05:00</published><updated>2011-06-18T08:35:07.755-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="comando linux"/><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="firefox 5"/><category scheme="http://www.blogger.com/atom/ns#" term="mozilla"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Disponible Firefox 5 Release Candidate para Descarga</title><content type='html'>Ya está disponible para descargar la versión Release Candidate de Firefox 5, no nos encontraremos un cambio tan grande como cuando salió Firefox 4 pero si se han incorporado una serie de mejoras y de características nuevas que no tenemos en la versión actual.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.dacostabalboa.com/es/imagenes/Mozilla-Firefox-5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; i$=&quot;true&quot; src=&quot;http://www.dacostabalboa.com/es/imagenes/Mozilla-Firefox-5.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Algunas de esas mejoras son el soporte para animaciones con CSS, mayor integración en los entornos de escritorio Linux, eliminación de errores de versiones anteriores, mayor rendimiento tanto en memoria como en velocidad de canvas así como mejoras en el soporte de estándares como pueden ser HTML5, XHR, MathML, … entre otras cosas.&lt;br /&gt;
&lt;br /&gt;
La versión final se espera para el próximo 21 de junio, esta versión está disponible para Windows, Linux y Mac OS, podéis descargarla desde Mozilla&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Vía: Fayerwayer&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mimundoubuntu.blogspot.com/feeds/5359827276821032816/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/disponible-firefox-5-release-candidate.html#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/5359827276821032816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9110135141168689338/posts/default/5359827276821032816'/><link rel='alternate' type='text/html' href='http://mimundoubuntu.blogspot.com/2011/06/disponible-firefox-5-release-candidate.html' title='Disponible Firefox 5 Release Candidate para Descarga'/><author><name>Carlos Andrés Millán</name><uri>http://www.blogger.com/profile/06240469304222749082</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_trcOs3BqiVSbf08X-y0y4riCMn6bBlXyW5CupFZ-y5-DIyBjLBysxFfXrBI5HNSOv3C2mRUtUGvXP2d7lIDYU7YBe3RXB6J9brYAGcvdzNZZj6RAzpnICC77F8KHnAo/s220/IMG_20190810_111316.jpg'/></author><thr:total>0</thr:total></entry></feed>