Inicio Dart Guía Completa de Dart: Fundamentos y Ejemplos Prácticos

Guía Completa de Dart: Fundamentos y Ejemplos Prácticos

por Alberto Guaman

Dart es un lenguaje de programación desarrollado por Google, conocido por su eficiencia y versatilidad, especialmente en el desarrollo de aplicaciones móviles con Flutter. En esta guía, exploraremos los conceptos básicos de Dart, desde la configuración inicial hasta la programación orientada a objetos. Acompañaremos cada sección con ejemplos prácticos para facilitar la comprensión.

1. Introducción y Configuración

Introducción a Dart

Dart es un lenguaje de programación optimizado para aplicaciones de cliente, desarrollado para crear aplicaciones rápidas y eficientes en múltiples plataformas. Su sintaxis es clara y moderna, lo que facilita el aprendizaje para desarrolladores con experiencia en otros lenguajes como Java, JavaScript o C#.

Configuración del Entorno

Antes de comenzar a programar en Dart, es necesario configurar el entorno de desarrollo:

  1. Instalar Dart SDK: Puedes descargar el SDK de Dart desde la página oficial.
  2. Elegir un Editor de Código: Se recomienda usar Visual Studio Code con la extensión de Dart para obtener una mejor experiencia de desarrollo.
  3. Verificar la Instalación: Abre una terminal y ejecuta dart --version para asegurarte de que Dart está instalado correctamente.

2. Sintaxis Básica 

Variables y Tipos de Datos

Dart es un lenguaje de tipado estático, lo que significa que el tipo de una variable se conoce en tiempo de compilación. Sin embargo, también ofrece flexibilidad con el uso de var, final y const.

Tipos de Datos Básicos

  • int: Números enteros.
  • double: Números de punto flotante.
  • String: Cadenas de texto.
  • bool: Valores booleanos (true o false).
				
					void main() {
  // Sintaxis y Variables
  var nombre = "Daniela";
  final int edad = 25;
  const double pi = 3.1416;
  print("Mi nombre es $nombre, tengo $edad años y el valor de pi es $pi");
}

				
			

Uso de var, final y const

  • var: Permite la inferencia de tipos. Una vez asignado, el tipo no puede cambiar.
  • final: Variables de solo lectura. Pueden ser asignadas una vez.
  • const: Constantes en tiempo de compilación. Inmutables y asignadas en tiempo de compilación.
				
					void main() {
  var nombre = "Daniela";
  final int edad = 25;
  const double pi = 3.1416;
  // nombre = "Carlos"; // Válido
  // edad = 30; // Error: no se puede reasignar una variable final
  // pi = 3.14; // Error: no se puede reasignar una constante
  print("Mi nombre es $nombre, tengo $edad años y el valor de pi es $pi");
}

				
			

3. Operadores Básicos

Operadores Aritméticos

Permiten realizar operaciones matemáticas básicas.

  • Suma (+)
  • Resta (-)
  • Multiplicación (*)
  • División (/)

Operadores de Comparación

Se utilizan para comparar dos valores.

  • Igualdad (==)
  • Desigualdad (!=)
  • Mayor que (>)
  • Menor que (<)
  • Mayor o igual que (>=)
  • Menor o igual que (<=)
				
					void main() {
  // Operadores Básicos
  int a = 10;
  int b = 20;
  print(a == b); // false
  print(a != b); // true
  print(a > b);  // false
  print(a < b);  // true
  print(a >= b); // false
  print(a <= b); // true
}

				
			

4. Control de Flujo 

Condicionales: if, else, else if

Permiten ejecutar código condicionalmente basado en expresiones booleanas.

				
					void main() {
  int numero = 10;
  if (numero % 2 == 0) {
    print("El número es par");
  } else {
    print("El número es impar");
  }
}

				
			

Ciclos: for, while

Permiten ejecutar un bloque de código repetidamente.

				
					void main() {
  for (int i = 1; i <= 5; i++) {
    print("Iteración $i");
  }

  int contador = 1;
  while (contador <= 5) {
    print("Contador $contador");
    contador++;
  }
}

				
			

5. Funciones 

Definición de Funciones

Las funciones son bloques de código reutilizables que realizan tareas específicas.

Funciones con y sin retorno

  • Con retorno: Devuelven un valor.
  • Sin retorno (void): No devuelven ningún valor.

Parámetros opcionales y por defecto

Permiten definir parámetros que no son obligatorios o que tienen un valor predeterminado.

				
					void main() {
  // Funciones
  print(sumar(5, 3)); // 8
  saludar("Lilibeth"); // Hola, Lilibeth!
  saludar(); // Hola, Amigo!
}

int sumar(int a, int b) {
  return a + b;
}

void saludar([String nombre = "Amigo"]) {
  print("Hola, $nombre!");
}

				
			

6. Listas y Mapas 

Listas (List)

Colecciones ordenadas de elementos. Pueden ser homogéneas o heterogéneas.

Declaración, agregar y acceder a elementos

				
					void main() {
  // Listas
  List<String> frutas = ["Manzana", "Banana", "Pera"];
  frutas.add("Naranja");
  print(frutas[0]); // Manzana

  List<int> numeros = [1, 2, 3, 4, 5];
  print(numeros[0]); // 1
  numeros[2] = 10;
  print(numeros); // [1, 2, 10, 4, 5]
}

				
			

Mapas (Map)

Colecciones de pares clave-valor.

				
					void main() {
  // Mapas
  Map<String, int> edades = {
    "Graciela": 25,
    "Juan": 30,
  };
  print(edades["Graciela"]); // 25
}

				
			

7. Clases y Objetos (POO Básica)

Definición de Clases

Las clases son plantillas para crear objetos, encapsulando atributos y métodos.

Constructores

Métodos especiales para crear instancias de clases.

Atributos y Métodos

  • Atributos: Propiedades de la clase.
  • Métodos: Funciones asociadas a la clase.
				
					void main() {
  // Clases y Objetos
  var persona = Persona("Lilibeth", 28); // instancia
  persona.saludar(); // Llamada al método saludar
}

class Persona {
  String nombre; // atributo
  int edad;

  Persona(this.nombre, this.edad); // constructor

  void saludar() {
    // método
    print("Hola, mi nombre es $nombre y tengo $edad años.");
  }
}

				
			

Conclusión

En esta guía hemos cubierto los fundamentos de Dart, desde la sintaxis básica hasta la programación orientada a objetos. Entender estos conceptos es esencial para desarrollar aplicaciones robustas y eficientes. Dart ofrece una sintaxis clara y herramientas poderosas que facilitan el desarrollo de aplicaciones modernas.

Puntos Clave:

  • Variables y Tipos de Datos: Uso adecuado de var, final y const para manejar datos de manera eficiente.
  • Operadores: Realización de operaciones aritméticas y comparaciones.
  • Control de Flujo: Uso de condicionales y ciclos para manejar la lógica del programa.
  • Funciones: Creación de bloques de código reutilizables con y sin retorno.
  • Listas y Mapas: Manejo de colecciones de datos estructuradas.
  • Clases y Objetos: Implementación de la programación orientada a objetos para crear aplicaciones más complejas.

Entradas relacionadas