Capitulo1 Dart
Capitulo1 Dart
Prefacio ...........................................................................................................XIII
Capítulo 1- Introducción ..................................................................................... 1
Historia ................................................................................................................. 2
Dart ...................................................................................................................... 4
Dart VM ................................................................................................................ 6
Detalles del lenguaje de programación Dart ........................................................ 7
Instalar Dart ......................................................................................................... 8
Instalación en Windows ....................................................................................... 9
Instalación en Mac ............................................................................................. 10
Preparar el entorno de desarrollo...................................................................... 11
Utilizar el navegador .......................................................................................... 16
Hola mundo ....................................................................................................... 17
Capítulo 2 - Variables, tipos de datos y sintaxis ................................................ 27
Variables ............................................................................................................ 27
Tipado ................................................................................................................ 29
DART Y FLUTTER: Aprende las bases del desarrollo multiplataforma
VI © RC Libros
ÍNDICE
Switch................................................................................................................. 72
Capítulo 5 - Bucles ............................................................................................ 77
For ...................................................................................................................... 78
Elementos iterables ........................................................................................... 81
While .................................................................................................................. 83
Do while ............................................................................................................. 85
Capítulo 6 - Funciones ...................................................................................... 89
Introducción ....................................................................................................... 89
Funciones con parámetros ................................................................................. 98
Parámetros opcionales .................................................................................... 101
Parámetros con nombre .................................................................................. 103
Funciones con parámetros con valor por defecto............................................ 105
Funciones que reciben funciones de parámetros ............................................ 108
Funciones de flecha ......................................................................................... 110
Funciones anónimas ........................................................................................ 111
Funciones anidadas .......................................................................................... 115
Callbacks .......................................................................................................... 118
Alcance léxico................................................................................................... 121
Closure ............................................................................................................. 123
Capítulo 7 - Programación orientada a objetos ............................................... 127
Clases ............................................................................................................... 129
Propiedades ..................................................................................................... 130
Métodos ........................................................................................................... 132
Crear una clase en Dart .................................................................................... 133
Variables de instancia en Dart ......................................................................... 137
Propiedades privadas. ...................................................................................... 139
© RC Libros VII
DART Y FLUTTER: Aprende las bases del desarrollo multiplataforma
Métodos ...........................................................................................................142
Crear un objeto ................................................................................................144
Constructores ...................................................................................................147
This ...................................................................................................................155
Initializer list .....................................................................................................157
Constructores con nombre ..............................................................................162
Redirección de constructores...........................................................................166
Constructores Factory ......................................................................................168
Singleton ..........................................................................................................171
Propiedades y métodos estáticos ....................................................................173
Inicialización de variables de instancia.............................................................175
Setters y Getters ..............................................................................................177
Capítulo 8 - Herencia ...................................................................................... 181
Extends .............................................................................................................182
Override ...........................................................................................................184
Super ................................................................................................................187
Clase abstracta .................................................................................................191
Interface ...........................................................................................................196
Mixin ................................................................................................................199
Capítulo 9 -Generics, collections y null ........................................................... 203
Collections ........................................................................................................203
Generics ...........................................................................................................204
Null ...................................................................................................................208
Soundness ........................................................................................................210
Sound null safety ..............................................................................................211
VIII © RC Libros
ÍNDICE
© RC Libros IX
DART Y FLUTTER: Aprende las bases del desarrollo multiplataforma
Cupertino .........................................................................................................267
FloatingActionButton .......................................................................................268
TextStyle...........................................................................................................271
Estado ..............................................................................................................274
Llamar una función ..........................................................................................277
ElevatedButton ................................................................................................283
SnackBar...........................................................................................................288
IconButton .......................................................................................................292
TextButton .......................................................................................................294
Drawer .............................................................................................................295
ListView ............................................................................................................302
ListView.builder................................................................................................308
SizedBox ...........................................................................................................320
Card ..................................................................................................................321
Checkbox ..........................................................................................................322
Switch ...............................................................................................................323
Capítulo 13 - Navegación ................................................................................ 325
Navegación móvil .............................................................................................326
Navigator y Route ............................................................................................329
Navigator 1.0 ....................................................................................................332
Navigator 2.0 ....................................................................................................332
Pasar datos entre vistas. ..................................................................................333
Capítulo 14 - Animaciones .............................................................................. 335
Animación Tween.............................................................................................336
Animación basada en fisica ..............................................................................336
Animaciones implícitas.....................................................................................337
X © RC Libros
ÍNDICE
© RC Libros XI
PREFACIO
Existen muchas opciones en el mercado que nos prometen lograr que nuestra
aplicación pueda ser funcional para todos los sistemas operativos y que no tengamos
que hacer una versión distinta para cada uno de ellos. La realidad es que todas las
opciones en el mercado tienen ventajas y desventajas, unas más que otras. Pero
hasta el momento ninguna ha logrado cumplir el desarrollo multiplataforma al 100%.
Flutter es un SDK que está logrando no solamente este 100% de éxito en las
aplicaciones, sino que está trabajando en conjunto con la comunidad para ser la
opción más viable y por ahora es la apuesta más rentable para cumplir el objetivo de
programar una vez y poder hacer funcionar la aplicación en distintos sistemas
operativos.
Para poder utilizar de la mejor forma Flutter, necesitamos trabajar con el lenguaje
de programación Dart, un lenguaje de programación desarrollado por Google. Tanto
Flutter como Dart pertenecen a esta compañía.
DART Y FLUTTER: Aprende las bases del desarrollo multiplataforma
Dart es el primer paso entonces para cualquier desarrollador que esté interesado
en el desarrollo multiplataforma con el SDK Flutter; por lo tanto, esta curva de
aprendizaje es algo que debemos de superar si es que queremos dominar el
desarrollo multiplataforma.
XIV © RC Libros
PREFACIO
Agradecimientos
En este libro está plasmado el esfuerzo de los últimos 5 años en los que me he
dedicado a conocer el lenguaje de programación Dart y el SDK Flutter. Mi principal
tarea siempre fue entenderlo a detalle para mantenerme como un desarrollador de
aplicaciones móviles actualizado e interesado en las tecnologías del desarrollo móvil.
Este libro se lo quiero dedicar con mucho cariño y de una manera muy especial a
mi esposa, Noemí, y a mis padres, José y Fabiola, que siempre me han apoyado
durante todo este largo viaje dentro de la tecnología, y esta es la primera de muchas
veces que le dedicaré algo con un gran cariño especial a Viena.
XV © RC Libros
INTRODUCCIÓN
Al pasar los años se dieron cuenta de que este motivo era cada vez más lejano,
sobre todo en el momento en el que aparece Kotlin y se le nombra como un lenguaje
oficial para el desarrollo móvil. En ese instante Dart pasó a segundo término ya que
no era entonces la opción que todos esperaban para el desarrollo de aplicaciones
Android.
Historia
A partir de este punto la historia ha sido muy veloz, los cambios que ha sufrido el
lenguaje de programación y las nuevas implementaciones con tecnologías van a un
paso rápido.
El rendimiento es algo que el equipo que tiene el control sobre Dart está cuidando
mucho, cada vez que se hacen cambios considerables se resaltan los muy buenos
números que pueden lograr tomando en cuenta el rendimiento y se hacen pruebas
en las que se comparten los números con la comunidad.
2 © RC Libros
CAPÍTULO 1. INTRODUCCIÓN
En un principio Dart contaba con un sitio web considerado como el oficial para
que los desarrolladores interesados en él pudieran consultar la información, pero en
la actualidad el sitio es otro:
www.dart.dev
En resumen, se puede decir con toda seguridad que Dart es una grata sorpresa
dentro del desarrollo de software, pero sobre todo, en el desarrollo móvil, ya que
esta alternativa, que es parte del SDK Flutter, es una herramienta que está dando un
giro al desarrollo móvil.
© RC Libros 3
DART Y FLUTTER: Aprende las bases del desarrollo multiplataforma
Dart
Para conocer más sobre Dart, tendremos que ver una pregunta habitual que se
hace un desarrollador cuando comienza a utilizar un lenguaje de programación:
4 © RC Libros
CAPÍTULO 1. INTRODUCCIÓN
Esta pregunta nos lleva a hablar de una de las similitudes en la que podemos
notar el parecido con Java, pues este es un lenguaje que es compilado e
interpretado. Ahora vamos a describir un flujo normal de trabajo. Cuando escribimos
código en el lenguaje de programación Dart, lo que sucede es que tenemos un
compilador que se da a la tarea de trabajar con el código que generamos, en ese
momento se genera un “resultado”. Este “resultado” necesita ser pasado a una
máquina virtual que va a ser la encargada de leer y entregar el producto final. En este
proceso se observa de manera clara que Dart es un lenguaje compilado e
interpretado.
Es posible que esto no nos diga mucho por ahora, pero vamos a explicarlo para el
lector. Dentro de la compilación podemos decir que tenemos estas dos grandes
opciones, existen compiladores JIT y AOT. Cuando hablamos de compiladores JIT, el
compilador se ejecuta durante la ejecución del programa, en otras palabras se
compila sobre la marcha. Y al hablar de compiladores AOT, existen los compiladores
que se ejecutan durante la creación de la programación, esto sería antes del
considerado tiempo de ejecución.
Además, sabemos que puede ser interpretado, es por eso que podemos decir que
Dart sí es un lenguaje distinto, ya que en realidad todo lo que acabamos de
mencionar no es algo habitual, eso hace que se considere como un lenguaje muy
flexible. Al final no es lo más importante cuando quieres aprender Dart ya que sin el
conocimiento previo te puede confundir, pero en algunos proyectos puede que sea
muy buena idea estudiarlo, sobre todo para sacar el máximo provecho a las diversas
situaciones que podemos encontrarnos.
© RC Libros 5