Fundamentos del lenguaje Dart

Conceptos esencilaes

Dart es un lenguaje orientado a objetos donde todo elemento es una instancia de clase, incluyendo números, funciones y null. Todos los objetos heredan de la clase base Object.

  • Tipado fuerte con inferencia automática (ej: var contador = 5 infiere int)
  • Soporte para genéricos: Lista<int>, Mapa<String, dynamic>
  • Funciones de nivel superior (main), métodos de clase y funciones anidadas
  • Variables públicas por defecto; privadas con prefijo _ (ej: _privado)
  • Identificadores: letras o _ seguidos de caracteres alfanuméricos

Manejo de variables

<code>// Declaración con inferencia
var usuario = 'María';

// Tipo explícito
String ciudad = 'Madrid';

// Tipo dinámico
dynamic objeto = 'Texto mutable';</code>

Valores predeterminados

<code>int valor;
assert(valor == null);  // Variables no inicializadas son null</code>

Inmutabilidad

<code>final PI = 3.1416;
final double gravedad = 9.8;

const VELOCIDAD_LUZ = 299792458;
const VELOCIDAD_SONIDO = VELOCIDAD_LUZ / 881000;</code>

Tipos básicos

Números

<code>int entero = 42;
double decimal = 3.1416;</code>

Cadenas

<code>String s1 = 'Comillas simples';
String s2 = "Interpolación: ${entero * 2}";</code>

Booleaons

<code>bool activo = true;
assert(!activo);</code>

Colecciones

Listas

<code>var elementos = [10, 20, 30];
elementos[1] = 25;</code>

Mapas

<code>var colores = {
  'rojo': '#FF0000',
  'verde': '#00FF00',
  500: 'azul'
};</code>

Unicode

<code>var emoji = '\u{1F600}';
print(emoji.runes.toList()); // [128512]</code>

Funciones

<code>// Declaración estándar
int sumar(int a, int b) {
  return a + b;
}

// Sintaxis abreviada
int multiplicar(int x, int y) => x * y;

// Función como parámetro
[1, 2, 3].forEach((item) => print(item));</code>

Función principal

<code>void main() {
  print('Inicio del programa');
}</code>

Control de flujo

<code>// Condicional
if (llueve) {
  usarParaguas();
} else {
  salir();
}

// Iteración
for (var i = 0; i < 5; i++) {
  repetir();
}

// Switch
switch (estado) {
  case 'activo':
    ejecutar();
    break;
  default:
    pausar();
}</code>

Programación orientada a objetos

Clases básicas

<code>class Vector {
  num x, y;
  
  Vector(this.x, this.y);
  
  num magnitud() => sqrt(x*x + y*y);
}</code>

Herencia

<code>class Vector3D extends Vector {
  num z;
  
  Vector3D(super.x, super.y, this.z);
}</code>

Clases abstractas

<code>abstract class Figura {
  void dibujar();
}

class Circulo implements Figura {
  void dibujar() { /* implementación */ }
}</code>

Miembros estáticos

<code>class Matematica {
  static const PI = 3.1416;
  static double circuloArea(double r) => PI * r * r;
}</code>

Genéricos

<code>class Caja<T> {
  T contenido;
  
  Caja(this.contenido);
}

Caja<String> cajaTexto = Caja('Dart');</code>

Manejo asíncrono

<code>// Futuros
Future<String> obtenerDatos() async {
  var datos = await http.get('https://api.com');
  return procesar(datos);
}

// Streams
Stream<int> contarHasta(int max) async* {
  for (int i = 1; i <= max; i++) {
    yield i;
    await Future.delayed(Duration(seconds: 1));
  }
}</code>

Etiquetas: Dart programación Flutter Tipado asincronia

Publicado el 6-20 06:10