Por qué escribo este tutorial?

La razón por la cual he decidido escribir éste tutorial, es para tener mis propios apuntes de lo que me gusta y espero que le sirva a otros programadores que deseen aprender Dart.

Por qué aprender dart?

Personalmente, decidí aprender Dart debido a que es el lenguaje utilizado por Flutter, un kit de desarrollo de software (SDK) que nos permite crear aplicaciones para sistemas operativos móviles como Android, IOS o Windows Phone con rendimiento nativo, e interfaces hermosas que permiten correr animaciones a 60 FPS, además Flutter al igual que Dart es desarrollado por Google, no les parece conveniente? desde mi punto de vista esto garantiza buena integración y soporte.

Requisitos y/o recomendaciones

Éste tutorial está orientado a personas que tengan conocimientos básicos en programación dado que puede que omita ciertas definiciones como por ejemplo, que ques una variable o para que sirve; El proposito de esta guía no es enseñar a programar, mas ayudar a entender como funcionan las cosas en Dart.

Además recomiendo probar cada ejemplo y modificarlo para que puedan ver los resultados ustedes mismos y así comprender mejor cada ejercicio presentado en esta publicación, no olviden que la práctica hace al maesto.

Dart: El lenguaje

Dart es un lenguaje type-safe; utiliza la verificación de tipo estático para garantizar que el valor de una variable siempre coincida con el tipo estático de la variable. A veces, esto se conoce como escritura de sonido. Aunque los tipos son obligatorios, las anotaciones de tipos son opcionales debido a la inferencia de tipos. El sistema de escritura Dart también es flexible, lo que permite el uso de un tipo dinámico combinado con comprobaciones en tiempo de ejecución, lo que puede ser útil durante la experimentación o para código que necesita ser especialmente dinámico.

Dart ofrece null safety, lo que significa que los valores no pueden ser nulos a menos que usted diga que pueden serlo. Con una sólida seguridad nula, Dart puede protegerlo de excepciones nulas en tiempo de ejecución a través del análisis de código estático. A diferencia de muchos otros lenguajes null-safe, cuando Dart determina que una variable no admite nulos, esa variable siempre lo es. Si inspecciona su código en ejecución en el depurador, verá que la no anulabilidad se conserva en el tiempo de ejecución.

¿Dónde se puede utilizar?

Actualmente Dart lo puedes utilizar casi para cualquier cosa, como por ejemplo en:

  • En aplicaciones web.
  • En servidores.
  • En aplicaciones de consola.
  • En aplicaciones móviles.

Los principales ejemplos de uso de este lenguaje los podemos encontrar en: Flutter, Google AdSense y Google AdWords.

Principales Características:

  • AOT ( Ahead Of Time): Compilado a un rápido y predecible código nativo.
  • Compilación JIT (Just In Time): Compilado para una velocidad excepcional de desarrollo.
  • Permite crear fácilmente animaciones y transiciones que corren a 60fps.
  • Al ser compilado a código nativo, no requiere intermediarios para correr el código.

DartPad

Antes de entrar al código en dart, te invito a probar DartPad, un editor online donde podrás realizar todas las pruebas de este curso.

Abrir dartPad.dev

¡Hola mundo!

Para comenzar realizando el popular Hola Mundo, En dart toda aplicación debe tener la función main(), y para mostrar un texto en la consola se puede usar la función print().

Variables

A pesar de que dart es un lenguaje type-safe, la mayoría de las variables no necesitan tipos explícitos, gracias a la inferencia de tipos:

Final vs Const

En Dart, const significa que su valor nunca va a cambiar en tiempo de compilación, mientras que final se mantiene igual al momento de su primera asignación.

Your content goes here. Edit or remove this text inline or in the module Content settings. You can also style every aspect of this content in the module Design settings and even apply custom CSS to this text in the module Advanced settings.

Tipos de datos integrados

A pesar de la flexibilidad de Dart con los tipos de datos dinámicos, es preferible definir los tipos de datos. El lenguaje Dart tiene soporte especial para los siguientes tipos de datos:‎

  • Strings (String)
  • Numbers (int, double)
  • Booleans (bool)
  • Lists (List, ‎también conocido como‎ arrays)
  • Sets (Set)
  • Maps (Map)
  • Runes (Runes; ‎a menudo reemplazado por el‎ characters API)
  • Symbols (Symbol)
  • The value null (Null)

Strings

  • un string (String object) en Dart ‎contiene una secuencia de unidades de código UTF-16‎‎Puede utilizar comillas simples o dobles para crear una cadena‎.
  • ‎Puedes colocar el valor de una expresión dentro de una cadena usando el ‎‎símbolo $
  • Puedes concatenar un String con el símbolo +
  • ‎una forma de crear una cadena de varias líneas: use una comilla triple con comillas simples o dobles:

Números

el tipo de dato int comprende los números enteros, es decir los números que van desde menos infinito hasta mas infinito sin incluir decimales.

El tipo de dato double comprende los números reales, es decir los números que van desde menos infinito hasta más infinito, incluyendo los decimales.

En el siguiente ejemplo Dart va a generar un error de compilación al tratar de asignar un valor tipo double a una variable de tipo int.

Booleanos

Los booleanos en Dart pueden tomar valores de true o false.

Si deseamos que pueda tomar valores null, debemos agregar el simbolo “?” (esto aplica para otros tipos de datos e incluso funciones).

Condicionales

Los condicionales ayudan a la aplicación a tomar una decisión dependiendo de si se cumple o no una condición.

Listas

En otros lenguajes de programación son llamados Arrays, en Dart les decimos Listas.

Las listas se definen así: List<tipo-de-dato> varName = [];

Podemos usar la función llenar la Lista con valores, en el siguiente ejemplo vamos a utilizar está función para llenar la lista con 10 números.

Mapas

En otros lenguajes de programación pueden ser conocidos como literales, diccionarios, etc…

Al crear un mapa es importante definir el tipo de dato de la izquierda y el tipo de dato de la derecha, si deseamos que alguno de los valores acepte cualquier tipo de dato podemos usar dynamic.

Podemos agregar valores a los mapas después de haberlos creado haciendo uso de la función addAll.

Funciones

Las funciones nos permiten extraer y reutilizar porciones de código manteniendo nuestras aplicaciones mas organizadas y fáciles de entender.

Parámetros por nombre y Parámetros opcionales.

Los parámetros por nombre se definen dentro de llaves y permiten que una función reciba los parámetros en cualquier order, incluso se puede omitir parámetros (opcionales), cuando se llama una función que hace uso de parámetros por nombre, se debe llamar a la funcion escribiendo el nombre del parámetro que se desea enviar, seguido de su valor. 

Parámetros required y null.

Clases

A continuación se muestra un ejemplo de una clase con dos propiedades, de las cuales una es opcional(name) y la otra es obligatoria(power); Adicionalmente hacemos un override al metodo toString() para poder imprimir la instanacia de la clace, de otra forma obtendriamos como respuesta Instance of ‘Hero’.

Te invito a probarla, intenta enviar cada uno de los parámetros por separado, comenta el método al que le hicimos el override, imprime el objeto y observa como se comporta y los mensajes de error que puedes obtener.

Constructores por nombre

En el siguiente ejemplo crearemos un método que recibe un mapa como parámetro, donde name es obligatorio y power es opcional con un valor por defecto.

Getters y Setters

En el siguiente ejemplo importamos la librearia ‘dart:math’ para poder hacer uso de la función sqrt, creamos la clase Square, definimos una propiedad, un constructor, un getter y un setter. la function sqrt() la utlizamos para calcular el valor del lado del cuadrado a partir del área.

Clases abstractas

Una clase abstracta es una clase que no se puede instanciar, y pueden ser utilizadas como una base de una jerarquía de clases, de esta forma las clases hijas deberan implementar los metodos especificados en la clase abstracta.

Extends

Extends nos permite implementer metodos en la clase abstracta

Mixins

Los mixins nos permiten hacer uso de diferentes clases con funcionalidades específicas; Las clases las usamos con la palabra with, y si quieremos usar mas de una clase simplemente escribimos los nombres de las clases que deseamos, separadas por “,”.

En el siguiente ejemplo vemos como por ejemplo el pez volador hace uso de los mixins para poder hacer uso de la funcionalidad de las clases Volador y Nadador.

5 2 votes
Article Rating
Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments