Documentos de Académico
Documentos de Profesional
Documentos de Cultura
com
Aleteo
®
Aleteo
®
Copyright © 2020 por John Wiley & Sons, Inc., Hoboken, Nueva Jersey
Ninguna parte de esta publicación puede ser reproducida, almacenada en un sistema de recuperación o transmitida de ninguna forma
o por ningún medio, ya sea electrónico, mecánico, fotocopiado, grabado, escaneado o de otro modo, excepto según lo permitido por
las Secciones 107 o 108 de la Ley de derechos de autor de los Estados Unidos de 1976. Acto, sin el permiso previo por escrito del Editor.
Las solicitudes de permiso al editor deben dirigirse al Departamento de permisos, John Wiley & Sons, Inc., 111 River Street, Hoboken,
NJ 07030, (201) 748-6011, fax (201) 748-6008, o en línea enhttp://www.wiley.com/go/permissions.
Marcas registradas:Wiley, For Dummies, el logotipo de Dummies Man, Dummies.com, Making Everything Easier y la imagen
comercial relacionada son marcas comerciales o marcas comerciales registradas de John Wiley & Sons, Inc. y no se pueden usar sin
permiso por escrito. Flutter es una marca registrada de Google, LLC. Todas las demás marcas comerciales son propiedad de sus
respectivos dueños. John Wiley & Sons, Inc. no está asociado con ningún producto o proveedor mencionado en este libro.
Para obtener información general sobre nuestros otros productos y servicios, comuníquese con nuestro Departamento de atención al cliente
dentro de los EE. UU. al 877-762-2974, fuera de los EE. UU. al 317-572-3993 o al fax 317-572-4002. Para soporte técnico, por favor visite
https://hub.wiley.com/community/support/dummies.
Wiley publica en una variedad de formatos impresos y electrónicos y por impresión bajo demanda. Es posible que parte del material incluido
con las versiones impresas estándar de este libro no se incluya en los libros electrónicos o en la impresión bajo demanda. Si este libro hace
referencia a medios como un CD o DVD que no está incluido en la versión que compró, puede descargar este material en
http://booksupport.wiley.com.Para obtener más información sobre los productos Wiley, visitewww.wiley.com.
10 9 8 7 6 5 4 3 2 1
Contenido de un vistazo
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Parte 1: Preparándose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CAPÍTULO 1: ¿Qué es Flutter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Configuración
CAPITULO 2: de su computadora para el desarrollo de aplicaciones móviles . . . . . . . . . . . . 29
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Tabla de contenido
INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Como usar este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Convenciones utilizadas en este libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Lo que no tienes que leer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
suposiciones tontas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Cómo
está organizado este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Parte 1, “Preparándose” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Parte
2, “Flutter: una vista panorámica” . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Parte 3,
“Detalles, Detalles” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Parte 4, “La
parte de los diez” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ¡Más en la
web! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 iconos utilizados en
este libro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Más allá del
libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Dónde ir desde
aquí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
PARTE 1: PREPARÁNDOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CAPÍTULO 1: ¿Qué es Flutter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Hardware y software (cosas que quizás ya sepa) . . . . . . . . . . .10 ¿Dónde
encaja Flutter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
Desarrollo multiplataforma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Un ciclo
de desarrollo rápido y fácil . . . . . . . . . . . . . . . . . . . . . . . . .17 Una gran manera
de pensar en el desarrollo de aplicaciones . . . . . . . . . . . . . . . . . .25 ¡Basta de
nueva terminología! ¿Que sigue? . . . . . . . . . . . . . . . . . . . . . . . . .28
Tabla de contenido ix
PARTE 3: DETALLES, DETALLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
CAPÍTULO 7: Interactuando con el Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Un Cambio Sencillo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208
La palabra clave const de Dart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.211 Compatible o NO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
¡Espéralo! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214 ¿Cuánto
te gusta Flutter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217 Manejo de campos de
texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Llamadas 1 y 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
Llamada 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Llamada 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Llamada 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Tabla de contenido xi
Poner las cosas fuera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
Interactuando con el Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
Navegación, listas y otras ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . .333 Moviéndose a
lo largo de la derecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
ÍNDICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
O
l 5 de diciembre de 2018, en un evento anual de desarrolladores en Londres,
Google anunció el lanzamiento de Flutter 1.0. Entre el 5 de diciembre y finales de
diciembre, el número de visitas a la página del sitio web oficial de flutter.io
saltó de 2,3 millones a 4,7 millones. En el año siguiente, la cantidad de publicaciones sobre
Flutter en el sitio web de desarrolladores de Stack Overflow aumentó en un 70 por ciento,
superando la cantidad de publicaciones sobre React Native, la alternativa más popular a Flutter.
Empresas como Capital One, Alibaba, Groupon y Philips Hue usan Flutter para desarrollar
aplicaciones móviles. La aplicación oficial del musical.hamiltonestá escrito usando Flutter. El
próximo sistema operativo móvil de Google, cuyo nombre en código es Fuchsia, se basa en
Flutter. Se estima que 200 millones de usuarios ejecutan aplicaciones escritas en Flutter. Más de
250 000 desarrolladores escriben código de Flutter y Google Play Store tiene más de 3000
aplicaciones de Flutter.
Introducción 1
Las convenciones usadas en este libro
Casi todos los libros de temática técnica comienzan con una pequeña leyenda tipográfica, y
Aleteo para tontosno es una excepción. Lo que sigue es una breve explicación de los tipos de
letra utilizados en este libro:
»Si necesita escribir algo que se mezcle con el texto normal, los caracteres
escribe aparecen en negrita. Por ejemplo: “TipoMiNuevoProyectoen el campo de texto.”
»Es posible que deba cambiar ciertos caracteres cuando los escriba por su cuenta
teclado. Por ejemplo, puedo pedirle que escriba
lo que significa que escribescadena final, y luego un nombre que inventes por tu cuenta, y
luego un punto y coma. Las palabras que necesita reemplazar con sus propias palabras se
establecen encursiva informática.
Si desea omitir las barras laterales y los párrafos con íconos de Material técnico, hágalo.
De hecho, si quieres saltarte algo, siéntete libre.
En aquellas ocasiones en las que necesite arrastrar y soltar, cortar y pegar o conectar y usar, lo
guío cuidadosamente a través de los pasos. Pero su computadora puede estar configurada de
varios miles de millones de formas, y es posible que mis instrucciones no se ajusten a su situación
especial. Cuando llegue a una de estas tareas específicas de la plataforma, intente seguir los pasos
de este libro. Si los pasos no encajan del todo, consulte un libro con instrucciones adaptadas a su
sistema. Si no puede encontrar un libro así, envíeme un correo electrónico. (Mi dirección aparece
más adelante en la introducción).
»Supongo que puedes pensar lógicamente.Eso es todo lo que hay para la aplicación.
desarrollo — pensar lógicamente. Si puedes pensar lógicamente, lo tienes hecho. Si
no cree que puede pensar lógicamente, siga leyendo. Puede que te sorprendas
gratamente.
Por otro lado, si ha hecho algo de codificación (tal vez en Java, Python o C++), descubrirá
algunos giros de trama interesantes en Dart, el lenguaje que se usa para desarrollar
aplicaciones de Flutter. Los creadores de Dart tomaron las mejores ideas de la
programación orientada a objetos y la programación funcional, las simplificaron, las
modificaron y las reorganizaron en una forma simple pero poderosa de pensar en los
problemas. Disfrutarás programando en Dart.
Introducción 3
Cómo está organizado este libro
Este libro está dividido en subsecciones, que se agrupan en secciones, que se unen para
formar capítulos, que finalmente se agrupan en cuatro partes (como una de esas
matrioskas rusas). Las partes del libro se describen aquí.
Parte 1, “Preparándose”
La Parte 1 cubre todas las tuercas y tornillos. Le presenta las ideas principales detrás del
desarrollo de aplicaciones móviles y lo guía a través de la instalación de los productos de
software necesarios.
Las instrucciones de estos capítulos cubren tanto las computadoras con Windows como las Macintosh.
Abarcan muchas configuraciones informáticas con todo tipo de software ya instalado. Pero agregar
nuevo software siempre es complicado y es posible que tenga algunos obstáculos que superar. Si es
así, consulte el final de este capítulo para encontrar formas de comunicarse conmigo (el autor) y
obtener algunos consejos rápidos. (Sí, respondo correos electrónicos, tweets, publicaciones de
Facebook y notas enviadas por palomas mensajeras).
Si ha creado aplicaciones específicamente para Android o iOS, es posible que parte del material
de la Parte 2 le resulte familiar. Si es así, puede omitir secciones o leer este material
rápidamente. Pero no lea demasiado rápido. Flutter es diferente de la mayoría de los otros
marcos de desarrollo, y vale la pena señalar las diferencias de Flutter.
Si pudieras verme escribir este libro, me verías sentado frente a mi computadora, hablando
conmigo mismo. Digo cada oración en mi cabeza. La mayoría de las frases las murmuro varias
veces. Cuando tengo un pensamiento adicional, un comentario adicional o algo que no
pertenece a la corriente normal, giro un poco la cabeza. De esa manera, quienquiera que me
esté escuchando (generalmente, nadie) sabe que me estoy yendo por la tangente
momentánea.
Por supuesto, impreso, no puedes verme torciendo la cabeza. Necesito alguna otra forma de dejar un
pensamiento secundario en un rincón por sí mismo. Yo lo hago con iconos. Cuando vea un icono de
Sugerencia o un icono de Recordar, sabrá que me estoy desviando rápidamente.
Un consejo es una pieza adicional de información, un consejo útil que los otros libros pueden
olvidar decirle.
Todos cometemos errores. Dios sabe que he hecho algunos en mi tiempo. De todos modos, cuando
creo que las personas son especialmente propensas a cometer un error, marco el texto con un icono
de Advertencia.
Introducción 5
“Si no recuerdas lo que significa tal o cual cosa, consulta bla, bla, bla” o “Para obtener más
información, lee bla, bla, bla”.
Este ícono llama la atención sobre material útil que puede encontrar en línea. (No tiene
que esperar mucho para ver uno de estos íconos. ¡Uso uno al final de esta introducción!)
Si te gusta lo que lees, envíame una nota. Mi dirección de correo electrónico, que creé solo para
comentarios y preguntas sobre este libro, esflutter@allmycode.com. Si el correo electrónico y
el chat no son tus favoritos, puedes contactarme en Twitter (@todomicódigo) y en facebook (/
todomicódigo).Y no se olvide: para obtener las últimas actualizaciones, visite el sitio web de
este libro. La dirección directa del sitio eswww.allmycode.com/flutter. Alternativamente,
puede visitarwww.allmycode.comy encontrar enlaces a todas las páginas web de mis libros.
aplicaciones móviles
»Alternativas a Flutter
Capítulo1
¿Qué es Flutter?
S
Hace varios años, gané un teléfono inteligente en una rifa en una conferencia de
desarrolladores de aplicaciones. ¡Qué alegría fue ganar algo! La experiencia me hizo sentir que
todo el cosmos me favorecía. Cada vez que usaba ese teléfono, me sentía como un pez gordo.
Eventualmente, la batería del teléfono se debilitó tanto que tuve que cargarla cada hora. No me
di cuenta de que el teléfono todavía estaba en garantía, así que traté de reemplazar la batería
del teléfono yo mismo. Compré una batería nueva de un proveedor en línea. Las instrucciones
me decían cómo desarmar la caja, desenganchar las conexiones del circuito y quitar la batería
vieja de su soporte.
Todo salió bien hasta la parte de quitar la batería vieja. Las instrucciones decían que tirara de
una pequeña pestaña, pero no pude encontrar una pestaña. Entonces, intenté durante varios
minutos controlar la batería.
La batería no se movía, así que encontré un pequeño destornillador e intenté sacar la batería
de su apretado entorno. Fue entonces cuando escuché un estallido, olí humo y me di cuenta de
que la batería del teléfono se había incendiado.
Avance rápido a la tarde siguiente. Pasaba por delante de una tienda de electrónica, así
que entré y pregunté si el comerciante podría arreglar mi teléfono. "Sí", dijo. “Tráelo la
próxima vez que estés en el vecindario. Puedo arreglar cualquier teléfono.
Todavía recuerdo esta historia de la batería del teléfono de principio a fin. Recuerdo la alegría de
ganar un teléfono gratis, la conmoción de verlo arder en llamas y la mirada de horror en el rostro del
comerciante. Pero mi recuerdo más poderoso proviene del momento en que abrí la carcasa del
teléfono: dentro de esa pequeña carcasa, vi suficientes circuitos para marearme. Habiendo hecho
algunos trabajos eléctricos en mi propia casa, había manejado cables gruesos de calibre 10 y
conectores pesados de 220 voltios. Reemplacé las tarjetas de sonido de las computadoras de
escritorio, los discos duros de las computadoras portátiles y el SSD dentro de una MacBook Air muy
apretada. Pero este teléfono inteligente fue increíble. La placa de circuito parecía un microchip por
derecho propio. Los conectores eran tan pequeños que me preguntaba cómo las señales podían pasar
a través de ellos de manera confiable.
No hay duda al respecto: los teléfonos móviles son bestias complicadas. Asique, como trabajan? ¿Qué
los hace funcionar? ¿Qué está pasando dentro de cada uno de esos aparatos extraordinarios?
Hardwarees lo que puedes tocar. Es la capa inferior del diagrama de la Figura 1-1. El
hardware consta de elementos como los circuitos, la memoria y la batería.
Las señales eléctricas que viajan a lo largo de los circuitos del hardware hacen que el hardware haga
lo que usted quiere que haga. Estas señales codifican instrucciones. En su conjunto, estas
instrucciones se denominansoftware.
Cuando las personas crean software, no describen cada señal eléctrica que viaja a través
de los circuitos del hardware. En cambio, la gente escribecódigo fuente— instrucciones
que se parecen a las instrucciones en inglés. Una instrucción de código fuente puede ser
una abreviatura de cientos o miles de señales eléctricas.
Una colección de instrucciones de código fuente que realizan una tarea particular (procesamiento de
textos, navegación web, administración de un termostato inteligente o lo que sea) se denomina
programa. Una persona que escribe estas instrucciones es unprogramadoro, un término que suena
más elegante, undesarrollador. La persona que ejecuta un programa en su propio dispositivo es un
usuario.
10 PARTE 1preparándose
FIGURA 1-1:
un concepto
vista de tu
teléfono móvil.
Así como las personas se comunican usando muchos lenguajes hablados, los programadores
escriben código fuente usando muchoslenguajes de programación. Si crea aplicaciones para
iPhone, probablemente escriba código en el lenguaje Swift o en el lenguaje Objective-C. Si crea
aplicaciones de Android, es probable que escriba código en Kotlin o Java.
Cuando crea una aplicación Flutter, escribe código en el lenguaje de programación Dart. Aquí
hay un programa completo de lenguaje Dart:
interactúe con el dispositivo. Los dispositivos fabricados por Apple, como iPhones y iPads, ejecutan el
iOSsistema operativo. Los teléfonos y tabletas Android ejecutan elAndroidesistema operativo (por
supuesto).
de calendario, los navegadores web y los juegos son ejemplos de programas de aplicación. Como desarrollador de
Según una estimación, el popular sistema operativo llamado Linux consta de casi 28 millones
de instrucciones. Nadie puede lidiar con tanto código, por lo que los sistemas operativos se
dividen en capas propias. La figura 1-1 muestra solo cuatro de las muchas capas de un sistema
operativo típico:
dispositivo, brinda acceso a la entrada y la salida, y realiza muchas otras tareas esenciales.
»Atiempo de ejecuciónes un montón de código que hace un trabajo adicional en segundo plano
mientras se ejecuta su programa de aplicación.
Los tiempos de ejecución vienen en muchas formas y tamaños. Un tiempo de ejecución para el lenguaje
de programación C consta de una cantidad de código relativamente pequeña. Por el contrario, un tiempo
de ejecución del lenguaje Java (unMáquina virtual de Java,oJVM) es una gran pieza de software con muchas
partes móviles.
Cuando ejecuta una aplicación de iOS, la aplicación utiliza eltiempo de ejecución de Objective-C. Cuando ejecuta una aplicación
de Android, esa aplicación utiliza elTiempo de ejecución de Android, también conocido comoARTE.
He aquí alguna terminología útil: en lugar de decirle a una API que "aplique su
aMayúsculascaracterística”, ustedllamara Mayúsculas.Este uso de la palabrallamar se
remonta al lenguaje de programación FORTRAN de la década de 1950.
Los sistemas operativos no han acaparado el mercado de las API. Todos los tipos de
software vienen con API. Flutter y Dart tienen sus propias API.
12 PARTE 1preparándose
A veces me refiero a una API comobiblioteca. Toma prestados libros de una
biblioteca pública y toma prestado el código existente de las API de Dart y Flutter.
A lo largo de la mayor parte de este libro, describo partes de las API de Dart y Flutter y
luego la forma en que usa esas partes para crear programas de Flutter.
Una API típica tiene miles de piezas. Nadie los memoriza todos. Cuando desee agregar una
imagen a su aplicación, abra la documentación de Flutter y busque la palabraImagen.la
documentacionImagenpágina le dice cómo mostrar una imagen, cómo cambiar el
tamaño de una imagen, cómo colocar una imagen en mosaico y cómo hacer todo tipo de
otras cosas buenas.
»losinterfaz de usuario del sistema operativoes el área que incluye la pantalla de inicio, el
íconos de lanzamiento, un explorador de archivos y cualquier otra cosa que los usuarios vean cuando no
una forma u otra, el sistema operativo presenta opciones para ayudar a los usuarios a iniciar
programas de aplicación y realizar otras tareas de mantenimiento. Estas opciones forman parte de la
Cada capa en la Figura 1-1 contiene una colección de componentes relacionados. Esto
ayuda a los programadores a centrarse en los componentes que más les preocupan, por
ejemplo:
»La API tiene código para ayudar a los desarrolladores a escribir programas de aplicación.
Un desarrollador que está creando una aplicación de compras en línea busca componentes en la
API.
»La capa Runtime tiene código para ejecutar programas de manera eficiente.
Para hacer que el código de todos se ejecute más rápido, los ingenieros de Apple realizan mejoras en la capa de
Además de separar partes del código entre sí, las capas forman rutas organizadas de
comunicación entre partes del sistema. En general, el código de una capa se comunica solo con
las capas inmediatamente superiores e inferiores. Por ejemplo, un usuario toca un botón que
pertenece a una aplicación meteorológica. La aplicación responde recurriendo a la
funcionalidad proporcionada por la API. La comunicación se abre camino hacia abajo en el
diagrama de la Figura 1-1 hasta que llega al hardware, que responde cambiando los píxeles en
la pantalla del dispositivo. Un usuario nunca se comunica directamente con la API y los
programas de aplicación no tienen acceso directo al kernel del sistema operativo.
A principios de la década de 1980, mi primo político, Chris, trabajaba para una empresa de software informático. La
empresa escribió el código para las máquinas de procesamiento de textos. (En ese momento, si quería redactar
documentos sin una máquina de escribir, compraba una “computadora” que no hacía nada más que
procesamiento de textos). Chris se quejó de que le pedían que escribiera el mismo código una y otra vez. “Primero,
escribo un programa de búsqueda y reemplazo. Luego escribo un corrector ortográfico. Luego escribo otro
programa de búsqueda y reemplazo. Luego, un tipo diferente de corrector ortográfico. Y luego un mejor programa
de búsqueda y reemplazo”.
¿Cómo se las arregló Chris para mantenerse interesado en su trabajo? ¿Y cómo se las arregló el
empleador de Chris para mantenerse en el negocio? Cada pocos meses, Chris tenía que reinventar la
rueda: desechar el viejo programa de buscar y reemplazar y escribir un nuevo programa desde cero.
Eso es ineficiente. Lo que es peor, es aburrido.
Durante años, los profesionales de la informática buscaban el santo grial: una forma de escribir software
para que fuera fácil de reutilizar. No escriba y reescriba su código de búsqueda y reemplazo. Solo divide la
tarea en pedazos pequeños. Una parte del código busca un solo carácter, otra parte busca espacios en
blanco y una tercera parte sustituye una letra por otra. Cuando tenga todas las piezas, simplemente
ensamble estas piezas para formar un programa de búsqueda y reemplazo. Más adelante, cuando piense
en una nueva función para su software de procesamiento de textos, vuelva a ensamblar las piezas de una
manera ligeramente diferente. Es sensato, rentable y mucho más divertido.
A fines de la década de 1980, se produjeron varios avances en el desarrollo de software y, a principios de la década de 1990,
se estaban escribiendo muchos proyectos de programación importantes a partir de componentes prefabricados. Para un
proyecto en particular o un lenguaje de programación en particular, estos componentes prefabricados formaron una
Cuando crea una aplicación Flutter, utiliza el lenguaje de programación Dart. Dart y Flutter
tienen API separadas:
• La API de Dart se ocupa de las tareas que todo lenguaje de programación debería poder
realizar, sin importar lo que los programadores quieran hacer con ese lenguaje.
Por ejemplo, la API de Dart ayuda a los programadores a redondear un número, recortar una cadena
Una parte de la API de Flutter se ocupa de los botones, campos de texto, casillas de verificación y
similares. Otra parte maneja los gestos de un usuario. Otro cubre la animación.
14 PARTE 1preparándose
Cada programa de Dart, incluso el más simple, recurre al código de la API de Dart, y cada
aplicación de Flutter recurre a las API de Dart y Flutter. Estas API son útiles y formidables. Son
útiles por todas las cosas que puede hacer con el código API. Son formidables porque ambas API
son extensas. Nadie memoriza todas las funciones disponibles gracias a las API de Dart y Flutter.
Los programadores recuerdan las funciones que usan con frecuencia y buscan las funciones que
necesitan en un apuro. Buscan estas características en un sitio web llamadoDocumentación de
referencia de la API de Flutter.
dispositivos móviles, pero las aplicaciones de Flutter también se pueden ejecutar en computadoras portátiles y de
escritorio. Flutter ciertamente no fue la primera API para dispositivos móviles, entonces, ¿por qué alguien debería
Desarrollo multiplataforma
Mi hamburguesería favorita anunció una nueva aplicación de pedidos móviles. Necesitaba la
aplicación para poder bajar rápidamente de un tren suburbano, tomar una hamburguesa y correr a
una reunión técnica cercana. Hice esto varias veces cada mes. Pero tenía un problema: la aplicación
solo se ejecutaba en iPhones y yo tenía un teléfono con Android.
Así que esperé y esperé a que el restaurante tuviera una aplicación para Android. Estaba tan
desesperado por una deliciosa hamburguesa con queso que finalmente me derrumbé y compré un
segundo teléfono. Pero resultó ser una mala idea. Tan pronto como llegó mi nuevo iPhone, la
hamburguesería lanzó su nueva y brillante aplicación para Android.
¿Qué hace que la plataforma Android sea diferente de su contraparte iOS? Para crear
botones de radio en la API de Android, escribe código del siguiente tipo:
<Grupo de radio>
<Botón de opción
android:id="@+id/radioButton1"
android:text="Rojo"
android:onClick="onRadioButtonClicked"/>
<Botón de opción
android:id="@+id/radioButton2"
android:text="Amarillo"
android:onClick="onRadioButtonClicked"/>
<Botón de opción
android:id="@+id/radioButton3"
android:text="Verde"
android:onClick="onRadioButtonClicked"/>
</Grupo de radio>
Intenta convertir ese código para que funcione en un iPhone. La API de iOS no tiene botones de
opción, por lo que, para adaptar una aplicación de Android con botones de opción para iOS, debe
escribir código para que parezcan botones de opción. También codifica reglas para que sigan los
botones de radio, reglas como "solo se puede seleccionar un botón a la vez". Si no desea crear
botones de radio desde cero, puede reemplazar los botones de radio de Android con un componente
de selección de iOS, algo que se parece a un viejo odómetro de automóvil. De una forma u otra,
reemplazar los componentes de una aplicación lleva tiempo y cuesta dinero.
Algunas empresas se dan por vencidas y crean aplicaciones para una sola plataforma: iPhone o
Android. Otras empresas contratan dos equipos de programadores, uno para el desarrollo de
iPhone y otro para el desarrollo de Android. Otras empresas tienen un equipo de
programadores que trabajan en ambas versiones del código. Para los directivos de las
empresas, el problema es desesperante. ¿Por qué gastar casi el doble de dinero y crear dos
aplicaciones que hacen casi las mismas cosas?
Un programa que hace uso directo de la API de Android o iOS se llamacódigo nativoy el código nativo
escrito para Android no se puede ejecutar en un dispositivo iOS. De la misma manera, el código nativo
escrito para iOS no tiene sentido para un dispositivo Android. ¿Qué debe hacer un desarrollador?
Un marco es una API de segundo nivel. ¿Qué diablos significa eso? Aestructuraes una API
que sirve como intermediario entre el desarrollador y alguna otra API. Si el uso directo de
la API de Android o iOS es problemático, cambie a la API de un marco. La API del marco se
enfrenta directamente a los problemas de Android e iOS.
Frameworks como Flutter ofrecen una alternativa al desarrollo de aplicaciones nativas. Cuando
escribe un programa Flutter, no escribe código específicamente para Android o iOS. En su
lugar, escribe código que se puede traducir a las llamadas a la API de cualquiera de los
sistemas. Así es como se crean botones de radio en el marco Flutter:
Radio(
valor: TrafficLight.Red,
valor de grupo: _trafficLightValue,
onChanged: _updateTrafficLight,
),
Radio(
valor: TrafficLight.Yellow,
valor de grupo: _trafficLightValue,
onChanged: _updateTrafficLight,
),
Radio(
valor: TrafficLight.Green,
valor de grupo: _trafficLightValue,
onChanged: _updateTrafficLight,
)
Su computadora traduce el código de este tipo en llamadas a la API de Android o llamadas a la API de
iOS, o ambas. ¡Eso es genial!
Tanto iOS como Android son tecnologías de desarrollo nativas. Con el desarrollo nativo, el
programador realiza llamadas directamente a la API del sistema.
13 de marzo de 2009:Nitobi Software presenta un marco que utiliza HTML, CSS y JavaScript para
crear aplicaciones para teléfonos móviles.
Cordova y sus primos son marcos de desarrollo de aplicaciones híbridas. Condesarrollo de aplicaciones
hibridas, una aplicación se ejecuta en una ventana que es esencialmente un navegador web. Debido a que la
tecnología de navegador web es estándar en todas las plataformas, una aplicación híbrida puede ejecutarse
¿Qué hay de "híbrido" en las aplicaciones híbridas? El código para mostrar texto e imágenes en un
navegador web no varía mucho de un entorno a otro, por lo que una página del navegador en un iPhone
se parece más o menos a la misma página en un teléfono Android. Pero comunicarse con dispositivos de
hardware, como el receptor GPS y el motor de vibración, es otra historia completamente diferente.
18 PARTE 1preparándose
Las páginas web no están diseñadas para comunicarse directamente con el hardware de un dispositivo. De hecho,
no quieres visitarwww.awfulwebsite.comy haga que el código del sitio tome fotografías en silencio con la cámara
integrada de su computadora portátil. Para hacer que una aplicación híbrida interactúe con el hardware, debe
retroceder y realizar llamadas a la API del iPhone, la API de Android o cualquier otra API que pueda usar. Es por
eso que frameworks como Apache Cordova tienencomplementos—programas adicionales cuyo código es
específico para iOS o Android. La conclusión es que una aplicación híbrida típica hace parte de su trabajo en un
¿Cuál es el inconveniente de las aplicaciones híbridas? Los marcos como Apache Cordova son como intérpretes de
idiomas extranjeros: mientras se ejecuta la aplicación, el dispositivo debe traducir constantemente las
instrucciones del navegador web en instrucciones de código nativo. Cuando habla a través de un intérprete, la
conversación puede volverse lenta. Las aplicaciones híbridas no siempre son tan receptivas como las aplicaciones
nativas. Además, las aplicaciones híbridas no pueden hacer todo lo que pueden hacer las aplicaciones nativas. Es
lo mismo cuando hablas a través de un intérprete de idioma extranjero. Puede decir la mayoría de las cosas que
Pero ¿por qué detenerse allí? Si puede traducir el código a aplicaciones de iOS y Android, puede
traducir el código a páginas web y aplicaciones de escritorio. Un desarrollador puede crear una
pieza de código y ejecutarla en todo tipo de teléfonos, tabletas, PC, Mac, relojes, tostadoras o lo
que sea.
(continuado)
Además, la forma en que Flutter muestra los componentes es diferente a la de React Native y Xamarin.
Cuando ejecuta una aplicación React Native en un iPhone, la aplicación recurre a la API de iOS para crear
botones, campos de texto y otros componentes visuales de iOS. Lo mismo es cierto para el desarrollo de
Android. React Native obtiene la API de Android para mostrar componentes específicos de Android. Los
componentes creados por las API de iOS y Android no se parecen. Las dos API usan diferentes formas,
diferentes paletas de colores y diferentes esquemas de navegación. Las diferencias pueden conducir a
resultados inesperados y, en ocasiones, pueden sabotear todo el esfuerzo de desarrollo multiplataforma.
Flutter no recurre a las API de iOS o Android para mostrar los componentes de una aplicación. En
cambio, Flutter especifica todos los píxeles diminutos necesarios para dibujar un botón o un campo de
texto y llama a la API de iOS o Android para pintar esos píxeles. Si desea que una aplicación se vea igual
en dispositivos iOS y Android, Flutter es su elección natural.
¿Qué sucede si desea que su aplicación tenga ese aspecto especial de iPhone cuando se ejecuta en
dispositivos iOS? ¿Puedes hacer eso con Flutter? Por supuesto que puede. (No haría la pregunta si la
respuesta fuera "No"). El marco Flutter tiene dos bibliotecas especiales: una para Android y otra para iOS.
La biblioteca Material Design de Flutter dibuja elementos que parecen componentes de Android, y la
biblioteca Cupertino de Flutter hace que los objetos parezcan componentes de iOS. Este libro enfatiza la
biblioteca Material, pero casi todo en él tiene una contraparte de Cupertino.
10 de mayo de 2239:La historiadora de tecnología Alice Touge publica un artículo sobre el origen de la palabra
teléfono,que en latín significa "sonido". Ella explica que los teléfonos del siglo 23 provenían de dispositivos cuyo
propósito original era únicamente transmitir sonido. Este hecho sorprendente se vuelve viral en todos los
Cuatro horas más tarde, recibía una pila de papel de una pulgada de grosor con un
mensaje de error en algún lugar en el medio. Volvería a la máquina de tarjetas
perforadas, haría otra tarjeta con una coma añadida en la columna 23 y haría todo el
trabajo de nuevo.
20 PARTE 1preparándose
No hay duda al respecto: un ciclo de desarrollo largo y arduo obstaculiza la productividad.
En estos días, reducir unos segundos el tiempo de respuesta puede marcar una gran
diferencia.
Esto es lo que sucede cuando crea una aplicación para dispositivos móviles:
potentes para toda la edición y otras cosas que necesitas hacer. En su lugar, crea el código de una
aplicación en una computadora portátil o de escritorio. Esta computadora portátil o de escritorio se llama
sucomputadora de desarrollo.
Para obtener una visión detallada de la compilación de código, consulte "¿Qué es un compilador?" de esta sección. barra
lateral
4.Presiona botones, escribe texto y, de lo contrario, prueba su aplicación para averiguar si está
haciendo lo que usted quiere que haga.
Por supuesto, no es hacer todas esas cosas. Así que regresa al Paso 1 y sigue intentándolo.
Los pasos 2 y 3 pueden ser dolorosamente lentos. Para algunas aplicaciones simples de iPhone y Android,
observé durante varios minutos mientras mi computadora preparaba el código para la próxima ejecución del
programa. Esta lentitud reduce considerablemente mi productividad.
Una aplicación que se ejecuta en código compilado por AOT se ejecuta sin problemas y de manera eficiente.
pantalla del dispositivo de prueba, el compilador JIT se apresura a traducir el código de ese botón.
Una aplicación que se ejecuta en un compilador JIT puede parecer lenta porque el compilador traduce el
código mientras se ejecuta la aplicación. Pero usar un compilador JIT es una excelente manera de probar
una aplicación.
4.Al probar su código, descubre que no está haciendo todo lo que usted quiere que
haga.
22 PARTE 1preparándose
¿QUÉ ES UN COMPILADOR?
Eres un ser humano. (Claro, cada regla tiene excepciones. Pero si estás leyendo este libro,
probablemente seas humano). De todos modos, los humanos pueden escribir y comprender el
siguiente código fuente de Flutter:
Si no ves las similitudes entre el código de Flutter y su equivalente en inglés, no te preocupes. estas
leyendoAleteo para tontosy, como la mayoría de los seres humanos, puedes aprender a leer y escribir el
código de Flutter. En caso de que te lo preguntes, este código fuente contiene la aplicación Flutter más
simple e inútil del mundo. Cuando se ejecuta la aplicación, ve una pantalla completamente negra. No es lo
que llamarías una "aplicación asesina".
El código fuente es bueno, pero el código fuente no es para todos ni para todo. Los procesadores de las
computadoras y los dispositivos móviles no son seres humanos. Los procesadores no siguen las
instrucciones del código fuente. En su lugar, siguen instrucciones crípticas del siguiente tipo:
Estos ceros y unos son, de hecho, las primeras palabras en la versión de un teléfono Android del código de la
aplicación Black Screen. Aquí está la aplicación Black Screen después de que un procesador interpreta los ceros
y los unos:
invocar-directo {v0},io/flutter/embedding/android/FlutterActivity/<init>
; <inicio>()V
retorno-vacío
. método final
(continuado)
invocar-estática {v1},io/flutter/plugins/GeneratedPluginRegistrant/
registrar con
; registrarseCon(Lio/flutter/incrustación/motor/FlutterEngine;)V
. línea 12
retorno-vacío
. método final
¡Que desastre! Los humanos no quieren leer o escribir instrucciones de este tipo. Estas instrucciones no
son instrucciones del código fuente de Dart. Ellos sonCódigo de bytes de Dalvikinstrucciones. Cuando
escribes un programa Flutter, escribes las instrucciones del código fuente de Dart. Si prueba su
programa en un dispositivo Android, su computadora de desarrollo traduce el código fuente en código
de bytes. Si prueba su programa en un iPhone, la computadora traduce su código fuente en algo que es
aún más oscuro que el código de bytes.
Nadie (a excepción de algunos programadores locos en algunos laboratorios aislados en lugares lejanos) escribe
el código de bytes de Dalvik o cualquier otro tipo de código que los procesadores realmente entiendan. Cuando
le pide a su computadora de desarrollo que ejecute su código, la computadora usa su propio software (un
compilador) para crear instrucciones fáciles de usar para el procesador. La única razón para mirar el código de
»Conreinicio en caliente, la aplicación comienza a ejecutarse de nuevo, eliminando cualquier dato que haya
ingresado durante la prueba más reciente, mostrando la aplicación como si la estuviera ejecutando por
primera vez.
24 PARTE 1preparándose
»Conrecarga caliente, la aplicación retoma desde donde la dejó, con los últimos datos
ingresado intacto, si es posible. Los únicos cambios son los dictados por sus
modificaciones al código.
El reinicio en caliente y la recarga en caliente de Flutter son increíblemente rápidos. Convierten el ciclo
de desarrollo de aplicaciones en un placer en lugar de una tarea.
El Capítulo 2 le brinda más información sobre cómo crear, probar y volver a ejecutar aplicaciones.
Los lenguajes hablados no son ni buenos ni malos, pero los lenguajes de programación pueden
tener buenas y malas cualidades. La mayoría de las aplicaciones híbridas están escritas en el
lenguaje de programación JavaScript. Sí, JavaScript es uno de los lenguajes más utilizados en el
mundo. Pero no, JavaScript no fomenta un buen diseño de software. Es fácil escribir código
confuso en JavaScript porque sus reglas son bastante permisivas. Puede escribir código
JavaScript descuidado y el código funciona bien. Es decir, funciona bien hasta que alguien
ingresa una entrada inesperada. Cuando eso sucede, tiene problemas para descubrir cómo
funcionaba su código en primer lugar. Incluso cuando no está ocupado corrigiendo errores,
agregar nuevas funciones al código JavaScript puede ser difícil y frustrante. Los aficionados a
JavaScript discutirán cada palabra de este párrafo pero, de una forma u otra, JavaScript tiene
sus desventajas.
La plataforma iOS de Apple usa los lenguajes Swift y Objective-C, mientras que Android usa
Kotlin y Java. Objective-C se remonta a principios de la década de 1980 y, como yo, está
mostrando su edad. A los otros tres idiomas les va bastante bien en la escala de buenas
características del lenguaje, pero ninguno de ellos es tan sencillo e intuitivo como Dart.
Además de eso, tanto iOS como Android dividen el código de una aplicación en dos partes separadas:
»Diseño:Cómo se ve la aplicación.
»Lógica:La secuencia de instrucciones que realiza la aplicación.
Pero esto no es un libro de Android. Es un libro de Flutter. Entonces, en este libro, afirmo que
separar el diseño de la lógica esnoóptimo Este es el por qué:
Es posible que haya escuchado el mantra integral del desarrollo de la aplicación Flutter:
¿Y qué es un widget? En una aplicación móvil, cada botón es uno de los widgets de la aplicación.
Cada campo de texto es un widget. La aplicación en sí es un widget. El posicionamiento de
botones y campos de texto es un widget. La animación de objetos de una parte de la pantalla a
otra es un widget. Cuando crea una aplicación Flutter, coloca widgets dentro de otros widgets,
que a su vez están dentro de más widgets. El Listado 1-1 tiene un código falso que ilustra el
punto:
Botón(
onPressed: print("Me han hecho clic"), Padding(
Texto(
"Haz click en mi"
),
),
),
),
),
)
26 PARTE 1preparándose
FIGURA 1-2:
Una aplicación con un
botón.
Para ver el código real que inspiró el código falso de este capítulo, visitewww.allmycode. es/
fluttery busque el enlace de descarga grande. El código real está en un archivo llamado
aplicación0101.
Compare las Figuras 1-2 y 1-3. La figura 1-2 muestra la aplicación tal como la ve el usuario. La Figura
1-3 muestra la misma aplicación que el desarrollador de Flutter codifica.
FIGURA 1-3:
Widgets dentro
widgets
28 PARTE 1preparándose
EN ESTE CAPÍTULO
»Instalando un desarrollo
ambiente
Capítulo2
Configuración de su
Computadora para móvil
Desarrollo de aplicaciones
A
Rquímedes vivió en la antigua Grecia durante el siglo II a. Su trabajo en el
desarrollo temprano de las matemáticas fue innovador. En la paz y la tranquilidad
de su propia bañera, se topó por casualidad con un importante
fórmula — una fórmula para describir la relación entre su peso y la cantidad de agua que
su cuerpo desplazó. Al hacer este descubrimiento, gritó "¡Eureka!" y saltó de la tina para
contárselo a todos en su ciudad. Con o sin túnica, Arquímedes quería que todos los
griegos compartieran su alegría.
Salta hacia adelante aproximadamente 2200 años. Tengo 12 años. En una conversación sobre
mover algunos muebles, mi padre cita a Arquímedes: “Dame una palanca lo suficientemente
grande y puedo mover el mundo”. Intento imaginarme esto. Aquí está la Tierra, colgando en el
espacio, y hay un palo muy largo con un rizo en la parte inferior. El rizo llega debajo del gran
planeta y lo empuja a una nueva posición.
Apestoso como era, vi tres problemas con este escenario. Primero, ¿cómo anclarías la
parte inferior de la palanca en un punto fijo en el espacio vacío? En segundo lugar, ¿cómo
impediría que la palanca cavara un enorme agujero en alguna parte blanda de la Tierra? Y
finalmente, ¿cómo tomaría la gente de la Tierra que su planeta fuera de órbita? Como
puedes ver, yo era un niño malhumorado.
Las herramientas no hacen directamente las cosas que usted quiere que se hagan. No puedes comer una herramienta, leer una
buena herramienta, escuchar la canción feliz de una herramienta o bailar la giga con una herramienta. Pero puedes usar
Este capítulo trata sobre las herramientas: las herramientas que utiliza para crear excelentes aplicaciones móviles.
Este libro le explica cómo crear aplicaciones usando Flutter. Antes de poder crear aplicaciones, necesita
algunas herramientas de software. Aquí hay una lista de las herramientas que necesita:
www.allmycode.com/Flutter
30 PARTE 1preparándose
»Un dispositivo para probar tu código Flutter
Escribe un código y luego lo ejecuta para ver si funciona correctamente. Por lo general, no
funciona correctamente hasta que realiza algunos cambios. La mayoría de las veces, no funciona
correctamente hasta que haceun montónde cambios
En este libro, hago hincapié en la creación de aplicaciones para teléfonos iPhone y Android. Puede
ejecutar su código en su propio teléfono, pero también puede ejecutarlo en su computadora. Para
ejecutar una aplicación móvil en su computadora, necesita un software que muestre un teléfono
en su pantalla y ejecute su aplicación dentro de esa pantalla.
Otro nombre para un dispositivo físico es undispositivo real. Para enfatizar, a veces escribo
dispositivo físico real. Supongo que podría ser más enfático y escribirDispositivo físico real,
real, duro, ¡puedes apostarlo!
Aquí hay buenas noticias: puede descargar gratis todo el software que necesita para ejecutar
los ejemplos de este libro. El software se divide en cuatro descargas:
»Cuando tu visitashttps://flutter.dev/docs/get-started/install,tú
puede hacer clic en un botón para instalar Flutter SDK.
»El simulador de iPhone, así como todo el código que necesitas para generar iPhone
apps, viene con la instalación de Xcode en tu Mac. Xcode está disponible en la tienda de
aplicaciones de Macintosh. (Desafortunadamente, no puede desarrollar para iPhone en una PC con
Windows).
Qué hacer
Es un estribillo viejo y familiar. Primero obtienes un software. Luego ejecutas el software.
El archivo descargado es un .Código Postalarchivo de archivo. (Consulte las barras laterales posteriores "Esas
Elija una versión del software que coincida con su sistema operativo
(Windows, Macintosh o lo que sea).
32 PARTE 1preparándose
cuadro de diálogo Control de cuenta y pide confirmación. no pongas elaleteo
directorio dentro de un lugar como ese.
Dices "carpeta". Digo "directorio". Para no citar del todo a Gershwin, dejemos todo
el asunto porque, en este libro, uso estas dos palabras indistintamente.
Para obtener más detalles sobre la instalación de Android Studio, consulte la sección posterior de este capítulo
Android Studio no es el único IDE que tiene funciones para crear aplicaciones de Flutter.
Algunos desarrolladores prefieren Virtual Studio Code (conocido cariñosamente como VS
Code), que está disponible para Windows, Macintosh y Linux. Y si le gusta trabajar duro,
puede prescindir de un IDE y usar la línea de comando junto con su editor de texto
favorito: Emacs, vi o Notepad. En este libro, me centro en Android Studio, pero puedes
encontrar muchas alternativas.
Los nombres de archivo que se muestran en el Explorador de archivos o en una ventana del Finder pueden
La fea verdad es que, de forma predeterminada, Windows y Mac ocultan muchas extensiones de nombre de
archivo. Esta horrible característica tiende a confundir a la gente. Si no quiere confundirse, cambie la
• En Windows 7 u 8:Siga las instrucciones de uno de los puntos anteriores. Luego, en el cuadro de diálogo
Opciones de carpeta, haga clic en la pestaña Ver. Busque la opción Ocultar extensiones de archivo para tipos
• En Windows 10:En el menú principal del Explorador de archivos, seleccione Ver. En la cinta que aparece, coloque una
seleccione la pestaña Avanzado y busque la opción Mostrar todas las extensiones de archivo. Asegúrese de
Mientras visita cualquier sitio de descarga de software, verifique los requisitos para
descargar, instalar y ejecutar ese software. Asegúrese de tener suficiente memoria y un
sistema operativo lo suficientemente actualizado.
Si tienes una Mac y quieres crear aplicaciones para iPhone, sigue estos pasos:
simple Xcode.
34 PARTE 1preparándose
ARCHIVOS COMPRIMIDO
Cuando tu visitaswww.allmycode.com/Fluttery descargue los ejemplos de este libro, descargue un
archivo llamadoFlutterForDummies_Listings.zip.Un archivo zip es un solo archivo que codifica un
montón de archivos más pequeños. losFlutterForDummies_Listings.zipexpediente
codifica archivos con nombres comoAplicación0301.dardo, Aplicación0302.dardo,yApp0401.dardo.
losApp0301.dardoEl archivo contiene el código del Listado 3-1, el primer listado del Capítulo 3. Del
mismo modo,App0302.dardoyApp0401.dardotenga el código en los Listados 3-2 y 4-1.
UNA .Código Postalarchivo es un ejemplo de unarchivo comprimidoexpediente. Otros ejemplos de archivos comprimidos
incluyen .tar.gzarchivos, .rararchivos y .paquete escasoarchivos Cuando usteddescomprimirun archivo, extrae los
archivos y carpetas originales almacenados dentro del archivo de almacenamiento más grande. (Para .Código Postal
• En una computadora con Windows,haga doble clic en el .Código Postalicono del archivo. Cuando hace esto, el
Explorador de archivos de Windows le muestra los archivos y carpetas dentro del archivo comprimido.Código Postal
archivo. Arrastre todos estos archivos y carpetas a otro lugar en el disco duro de su
computadora (un lugar que no esté dentro del archivo).
• En una Mac,haga doble clic en el .Código Postalicono del archivo. Cuando hace esto, la Mac extrae el
contenido del archivo comprimido y le muestra el contenido extraído en una ventana del Finder.
FIGURA 2-1:
Estudio de Android
predeterminado Bienvenido
pantalla.
Después de instalar el complemento, es posible que desee reiniciar Android Studio. Por supuesto,
debe reiniciarlo. Cuando lo haga, volverá a ver la pantalla de bienvenida. Ahora la pantalla de
bienvenida incluye la opción Iniciar un nuevo proyecto de Flutter. (Consulte la Figura 2-2.)
Para obtener más detalles sobre la configuración de Android Studio, consulte la sección "Sobre la
instalación del complemento Flutter de Android Studio", más adelante en este capítulo.
36 PARTE 1preparándose
FIGURA 2-2:
has instalado
el complemento Flutter.
1.Conectar a internet.
Durante la ejecución de su primera aplicación, Android Studio descarga
software adicional.
Después de seleccionar Iniciar un nuevo proyecto de Flutter, verá tres cuadros de diálogo,
uno tras otro. El primero pregunta qué tipo de proyecto de Flutter desea crear, el segundo
solicita el nombre de la nueva aplicación y otros detalles, y el tercero crea algo llamado
paquete.
3.En el primer cuadro de diálogo, seleccione Aplicación Flutter y luego haga clic en Siguiente.
(Consulte la Figura 2-3.)
El segundo cuadro de diálogo tiene cuatro campos: Nombre del proyecto, Ruta del SDK de Flutter,
FIGURA 2-4:
Detalles sobre
tu nueva aplicación.
Los nombres de proyectos de Flutter no pueden contener letras mayúsculas, espacios en blanco
38 PARTE 1preparándose
Si crea muchas aplicaciones, hacer un seguimiento de todas ellas puede volverlo loco. Por lo
tanto, ayuda si decide una fórmula para nombrar sus aplicaciones y luego se apega a esa
fórmula lo más cerca posible. Más adelante, cuando comience a comercializar sus aplicaciones,
puede abandonar la fórmula y usar nombres ingeniosos que atraigan la atención de las
personas.
5.Para la ruta del SDK de Flutter, proporcione su ruta del SDK de Flutter.
Copiaste la ruta del SDK de Flutter cuando seguiste el Paso 5 en la sección
anterior "Obtener e instalar las cosas", ¿no es así? Si lo olvidó, busque en su
disco duro una carpeta llamadaaleteo.Tiene que estar allí en alguna parte.
6.No cambie la opción Ubicación del proyecto, a menos que tenga un motivo
específico para hacerlo.
No tiene que especificar un nuevo directorio para cada uno de sus proyectos. Android
Studio lo hace automáticamente con la ubicación de este proyecto como punto de
partida.
Después de hacer clic en Siguiente, Android Studio muestra el cuadro de diálogo Establecer el nombre del
FIGURA 2-5:
el acabado
toca
Cuando crea su primer proyecto, el texto predeterminado del campo Nombre de la empresa
probablemente seaejemplo.com.Hace varios años, la Corporación de Internet para la Asignación de
Nombres y Números (ICANN) apartó este nombre para que cualquiera lo use. Inmediatamente debajo de
eso, el cuadro de diálogo proporciona el nombre del paqueteejemplo. com.cualquiera que sea el
nombre de tu aplicación. Este nombre de paquete predeterminado está bien cuando estás creando tus
primeras aplicaciones de Flutter.
Este cuadro de diálogo puede tener casillas de verificación etiquetadas como Generar contenido de
muestra, Incluir compatibilidad con Kotlin para el código de Android e Incluir compatibilidad con Swift
para el código de iOS. No se preocupe por estas casillas de verificación. Revísalos, o no los revises. Para
Como por arte de magia, aparece la ventana principal de Android Studio. (Consulte la Figura 2-6). La ventana
principal tiene todas las herramientas que necesita para desarrollar aplicaciones de Flutter de primer nivel.
Incluso tiene una aplicación de inicio de muestra, que ejecutará en los próximos pasos.
La ventana principal de Android Studio puede parecer abrumadora al principio. Para ayudarlo a sentirse
decepcionado (o tal vez simplemente abrumado en la media), describo las partes de la ventana principal
en la sección "Uso de Android Studio" de este capítulo, más adelante en este capítulo.
En la Figura 2-7, observe dos elementos importantes cerca de la parte superior de la ventana principal de Android
Studio:
• losEjecutar iconoes una pequeña flecha verde que apunta hacia la derecha.
10Si tiene una Mac y desea ejecutar un simulador de iPhone, seleccione Abrir simulador
de iOS en la lista desplegable Selector de destino.
40 PARTE 1preparándose
FIGURA 2-6:
Estudio de Android
ventana principal.
FIGURA 2-7:
Estudio de Android
barra de herramientas.
FIGURA 2-8:
Comience a ejecutar un
Android virtual
Dispositivo.
Figura 2-8, que muestra un dispositivo virtual etiquetado como Pixel API 28, debe crear un dispositivo
11Haga clic en el ícono Ejecutar en la barra de herramientas de Android Studio. (Consulte la Figura 2-7.)
Como resultado, la ventana de la herramienta Ejecutar de Android Studio aparece en la parte inferior
de la ventana principal. Aparecen algunos mensajes mientras espera con impaciencia que la aplicación
comience a ejecutarse. Cuando la aplicación comienza a ejecutarse, el dispositivo virtual (el simulador o
FIGURA 2-9:
¿No es maravilloso?
¡Felicidades! Tu primera aplicación se está ejecutando. Puede probar la aplicación haciendo clic
con el mouse en el botón de acción flotante de la aplicación (el elemento circular en la esquina
inferior derecha de la pantalla del dispositivo virtual). El mensaje en el medio le dice cuántas
veces ha hecho clic en el botón. No es la aplicación más útil del mundo, pero es un buen
comienzo.
Para obtener detalles sobre cualquiera de estos pasos, consulte las siguientes secciones.
42 PARTE 1preparándose
Tratando con los detalles del diablo
Hace varias décadas, compré un libro sobre bases de datos en la mesa de grandes descuentos
de mi supermercado local. Cuando llevé el libro a casa, me quedé irremediablemente atascado
en el Capítulo 1. No sabía cómo ejecutar el software correctamente. Luché durante varias horas
y luego me rendí. Nunca he tocado el libro desde ese día.
¿Por qué escribo sobre esta desagradable experiencia? Escribo sobre esto para asegurarles que me he
raspado los nudillos tratando de ejecutar el software. Es el problema que la mayoría de los lectores
preguntan cuando me envían un correo electrónico. Es natural quedarse atascado y necesitar ayuda.
En secciones anteriores, presento los pasos básicos para configurar su computadora y ejecutar
su primera aplicación Flutter. Los pasos básicos son buenos, pero no funcionan para todos. Por
eso, en este apartado, profundizo un poco más.
En el mundo del desarrollo de aplicaciones móviles, las cosas cambian muy rápidamente. Las
instrucciones que escribo el martes pueden estar desactualizadas el jueves por la mañana. Los
creadores de Flutter siempre están creando nuevas funciones y nuevas herramientas. Las
herramientas antiguas dejan de funcionar y las instrucciones anteriores ya no se aplican. Si ve
algo en su pantalla que no se parece a una de mis capturas de pantalla, no se desespere. Puede
ser algo muy nuevo, o puede que haya llegado a un rincón del software que no describo en este
libro. De una forma u otra, envíame un correo electrónico o un tweet o alguna otra forma de
comunicación. (No envíe una paloma mensajera. Mi gato la alcanzará antes de que encuentre la
nota). Mi información de contacto se encuentra en la introducción de este libro.
»En una Mac:El archivo descargado es probablemente un .DMGexpediente. Haga doble clic en el .DMG
icono del archivo.
Al hacer doble clic en el .DMGicono del archivo, verá el icono de Android Studio (también
conocido como el icono de Android Studio.app). Arrastre el icono de Android Studio a su
Aplicacionescarpeta.
Cuando inicie Android Studio por primera vez, es posible que vea un cuadro de diálogo que le ofrece
importar la configuración de una instalación anterior de Android Studio. Lo más probable es que no
tenga una instalación anterior de Android Studio, por lo que debe rechazar esta oferta de manera
firme pero cortés.
Verá esta pantalla de bienvenida una y otra vez. Dicho de manera informal, la pantalla de Bienvenida
dice: “En este momento, no está trabajando en ningún proyecto en particular (ninguna aplicación de
Flutter en particular). Entonces, ¿qué quieres hacer a continuación?
Cuando inicie Android Studio por primera vez, definitivamente debe instalar el complemento de
Android Studio para desarrollar aplicaciones de Flutter. Aquí hay una mirada más cercana y detallada
de cómo hacerlo:
Aparecerá un cuadro de diálogo Complementos con tres pestañas en la pantalla. Las pestañas
44 PARTE 1preparándose
FIGURA 2-10:
Verificar
Estudio de Android
complementos
FIGURA 2-11:
Los complementos
caja de diálogo.
ese caso, seleccione la opción Iniciar un nuevo proyecto de Android Studio en la pantalla de
bienvenida. Acepte todos los valores predeterminados hasta que vea la ventana principal de Android
Studio. Luego, en la barra de menú principal, seleccione Archivo - Configuración - Complementos (en
5.Seleccione Sí.
Definitivamente desea instalar el complemento Dart. (Para averiguar por qué, consulte el Capítulo 1.)
Cuando se trata de instalar dispositivos virtuales, las historias para iPhone y Android son un
poco diferentes.
»Con una computadora Apple, Windows o Linux, puede descargar Android Studio
y obtenga el emulador de Android que viene con él. Es posible que deba trabajar un poco
para instalar un dispositivo virtual de Android (AVD), pero eso no es gran cosa.
46 PARTE 1preparándose
Android hace una distinción entre un emulador y un dispositivo virtual de Android (AVD).
Aquí está la primicia:
• Aimagen del sistemaes una copia de una versión del sistema operativo Android.
Por ejemplo, una imagen de sistema en particular podría ser para Android Pie (nivel de API 28) que se
ejecuta en un procesador Intel x86_64.
Es posible que tenga una imagen del sistema para un procesador Atom_64, pero su computadora
de desarrollo ejecuta un procesador Core i5. El emulador traduce las instrucciones para el
procesador Atom_64 en instrucciones que puede ejecutar el procesador Core i5.
• Un dispositivo virtual de Android (AVD) es una pieza de software que describe el hardware de
un dispositivo.
Un AVD contiene un montón de configuraciones que le dicen al emulador todos los detalles
sobre el dispositivo que se va a emular. ¿Cuál es la resolución de pantalla del dispositivo? ¿El
dispositivo tiene un teclado físico? ¿Tiene una cámara? ¿Cuánta memoria tiene? ¿Tiene una
tarjeta SD? Todas estas opciones pertenecen a un AVD en particular.
Los menús y cuadros de diálogo de Android Studio facilitan la confusión de estos tres elementos. Cuando
crea un nuevo AVD, crea una nueva imagen del sistema para acompañar ese AVD. Pero los cuadros de
diálogo de Android Studio borran la distinción entre el AVD y la imagen del sistema. También ves la
palabraemulador,cuando el término correcto esAVD. Si las sutiles diferencias entre las imágenes del
sistema, los emuladores y los AVD no le molestan, no se preocupe por ellas.
Un desarrollador de Android experimentado normalmente tiene varias imágenes del sistema y varios AVD
en la computadora de desarrollo, pero solo un programa emulador de Android.