certmundo.
es‑mx

7 min de lectura

¿Qué es Dart y cómo funciona su sintaxis básica?

Dart es el lenguaje de programación creado por Google que Flutter usa para construir apps móviles, web y de escritorio.

Dart combina una sintaxis familiar (similar a Java o JavaScript) con herramientas modernas como tipado fuerte y compilación nativa. Aprender su sintaxis básica es el primer paso para escribir cualquier app con Flutter.

Variables y tipos de datos

En Dart, toda variable tiene un tipo de dato que define qué clase de información puede guardar.

Los tipos más comunes son:

Tipo Descripción Ejemplo
int Número entero 25, 1000
double Número decimal 18500.5, 3.14
String Texto "Guadalajara"
bool Verdadero o falso true, false
List Lista de valores [1, 2, 3]

Declarar una variable

Hay tres formas principales de declarar variables en Dart:

1. Con tipo explícito:

int edad = 28;
double salario = 18500;
String empresa = "FEMSA";
bool estaActivo = true;

2. Con var (Dart infiere el tipo):

var ciudad = "Monterrey";
var descuento = 0.15;

3. Con final y const (valores que no cambian):

final String rfc = "GOME850312AB3";
const double iva = 0.16;

final se asigna una sola vez en tiempo de ejecución. const es una constante que se conoce en tiempo de compilación.


Operadores aritméticos

Dart soporta los operadores matemáticos estándar.

Operador Significado Ejemplo
+ Suma salario + bono
- Resta salario - descuento
* Multiplicación precio * cantidad
/ División (decimal) total / meses
~/ División entera dias ~/ semanas
% Módulo (residuo) numero % 2

Ejemplo práctico: cálculo de salario neto

Supón que trabajas en Bimbo y quieres calcular el salario neto de un empleado.

void main() {
  double salarioBruto = 22000;
  double imss = salarioBruto * 0.0225;   // Cuota IMSS aprox.
  double isr = salarioBruto * 0.10;      // ISR simplificado
  double salarioNeto = salarioBruto - imss - isr;

  print("Salario bruto: \$$salarioBruto");
  print("Descuento IMSS: \$$imss");
  print("Descuento ISR: \$$isr");
  print("Salario neto: \$$salarioNeto");
}

Salida en consola:

Salario bruto: $22,000
Descuento IMSS: $495
Descuento ISR: $2,200
Salario neto: $19,305

Nota el uso de \$ dentro de un String para imprimir el símbolo de pesos sin que Dart lo interprete como interpolación.


Interpolación de Strings

Dart permite insertar variables directamente dentro de un texto usando $variable o ${expresión}.

String empleado = "Carlos Ramírez";
double salario = 18500;

print("Empleado: $empleado");
print("Salario mensual: \$$salario");
print("Salario anual: \$${salario * 12}");

Salida:

Empleado: Carlos Ramírez
Salario mensual: $18,500
Salario anual: $222,000

Usa ${} cuando necesites incluir una expresión completa, no solo una variable.


Control de flujo: condicionales

El control de flujo determina qué código se ejecuta según ciertas condiciones.

if / else

double ventasMensuales = 85000;

if (ventasMensuales >= 100000) {
  print("Bono de productividad aplicado.");
} else if (ventasMensuales >= 70000) {
  print("Meta parcial alcanzada.");
} else {
  print("Meta no alcanzada este mes.");
}

Salida: Meta parcial alcanzada.

switch

Usa switch cuando compares un valor contra múltiples opciones fijas.

String estado = "Jalisco";

switch (estado) {
  case "CDMX":
    print("Capital del país.");
    break;
  case "Jalisco":
    print("Ciudad: Guadalajara.");
    break;
  case "Nuevo León":
    print("Ciudad: Monterrey.");
    break;
  default:
    print("Estado no listado.");
}

Ciclos: for y while

Los ciclos repiten un bloque de código un número determinado de veces.

Ciclo for

// Calcular comisiones de 5 vendedores de Liverpool
List<double> ventas = [45000, 62000, 38000, 71000, 55000];
double comisionRate = 0.05;

for (int i = 0; i < ventas.length; i++) {
  double comision = ventas[i] * comisionRate;
  print("Vendedor ${i + 1}: comisión = \$$comision");
}

Salida:

Vendedor 1: comisión = $2,250
Vendedor 2: comisión = $3,100
Vendedor 3: comisión = $1,900
Vendedor 4: comisión = $3,550
Vendedor 5: comisión = $2,750

for-in (para listas)

List<String> sucursales = ["Polanco", "Perisur", "Interlomas"];

for (String sucursal in sucursales) {
  print("Sucursal Liverpool: $sucursal");
}

Ciclo while

int pedidos = 0;
int limite = 5;

while (pedidos < limite) {
  pedidos++;
  print("Pedido Mercado Libre #$pedidos procesado.");
}

Funciones en Dart

Una función es un bloque de código reutilizable que realiza una tarea específica.

Estructura básica

TipoRetorno nombreFuncion(TipoParametro parametro) {
  // cuerpo
  return valor;
}

Ejemplo 1: función simple

double calcularISR(double salario) {
  return salario * 0.10;
}

void main() {
  double isr = calcularISR(25000);
  print("ISR a retener: \$$isr");
}

Salida: ISR a retener: $2,500

Ejemplo 2: función con múltiples parámetros

double calcularSalarioNeto(double bruto, double bonos, double deducciones) {
  return bruto + bonos - deducciones;
}

void main() {
  double neto = calcularSalarioNeto(20000, 3000, 2500);
  print("Salario neto final: \$$neto");
}

Salida: Salario neto final: $20,500

Parámetros opcionales con nombre

Dart permite parámetros con nombre usando llaves {}.

void registrarEmpleado({String nombre = "Sin nombre", String empresa = "FEMSA"}) {
  print("$nombre trabaja en $empresa.");
}

void main() {
  registrarEmpleado(nombre: "Ana Torres", empresa: "Bimbo");
  registrarEmpleado(nombre: "Luis Mendoza");
}

Salida:

Ana Torres trabaja en Bimbo.
Luis Mendoza trabaja en FEMSA.

Errores comunes

1. Confundir / con ~/

int dias = 30;
int semanas = dias / 7;   // ❌ Error: resultado es double, no int
int semanas2 = dias ~/ 7; // ✅ Correcto: división entera

Dart no convierte automáticamente double a int. Usa ~/ cuando necesites un entero.

2. Olvidar el tipo en listas

List ventas = [1000, "error", true]; // ❌ Sin tipo, acepta cualquier cosa
List<double> ventas2 = [45000, 62000, 38000]; // ✅ Tipado correcto

Declara siempre el tipo de una lista para evitar errores difíciles de detectar.

3. Usar var para valores que deben ser constantes

var iva = 0.16;
iva = 0.20; // No da error, pero el IVA no debería cambiar

const double iva2 = 0.16; // ✅ No se puede modificar accidentalmente

Usa const o final para valores que no deben cambiar durante la ejecución.

4. Olvidar break en un switch

switch (estado) {
  case "Jalisco":
    print("Guadalajara");
    // ❌ Sin break: cae al siguiente caso
  case "Nuevo León":
    print("Monterrey");
    break;
}

Cada case debe terminar con break para evitar que el código continúe ejecutando casos siguientes.


Resumen de la sintaxis básica

Concepto Ejemplo rápido
Variable tipada int edad = 30;
Constante const double iva = 0.16;
Interpolación "Hola $nombre"
Condicional if (salario > 20000) { ... }
Ciclo for (int i = 0; i < 5; i++) { ... }
Función double calcular(double x) { return x; }

Dart prioriza el tipado fuerte. Declarar el tipo correcto desde el inicio evita la mayoría de los errores en tiempo de ejecución.

Puntos clave

  • Dart usa tipado fuerte: declara siempre el tipo de tus variables (`int`, `double`, `String`, `bool`) para evitar errores en tiempo de ejecución.
  • Usa `final` para valores que se asignan una vez en ejecución y `const` para constantes conocidas en compilación, como el IVA (0.16) o una tasa fija del IMSS.
  • La interpolación de Strings con `$variable` y `${}` te permite construir mensajes dinámicos sin concatenar con `+`, lo que hace el código más legible.
  • Las funciones con parámetros nombrados `{String nombre = "valor"}` son una característica clave de Dart que Flutter usa intensamente en sus widgets.
  • El operador `~/` realiza división entera en Dart; usar `/` cuando se espera un `int` genera un error de tipo que es uno de los más frecuentes al aprender el lenguaje.

Comparte esta lección: