Dart Academy · Lección

Campos final e inmutabilidad profunda

Construya objetos que nunca cambien

Lección 1 de 413 pasos

Campos final e inmutabilidad profunda es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.

Inmutabilidad por diseño

Un objeto immutable nunca cambia después de construirse. Esto hace que sus datos sean predecibles y seguros de compartir en toda la aplicación. 🔒

Conozca final

Un campo final se establece una sola vez, durante la construcción, y nunca se puede reasignar. Así, el valor queda fijo durante toda la vida del objeto.

class Point {
  final int x;
  Point(this.x);
}

Reasignar es un error

Si intenta asignar un valor nuevo a un campo final, el compilador se lo impide. El error se detecta antes de que el programa llegue a ejecutarse.

final p = Point(3);
p.x = 9; // compile error

final frente a const

Use const cuando el valor se conozca en tiempo de compilación, y final cuando se calcule en tiempo de ejecución. Ambos impiden reasignarlo posteriormente.

const pi = 3.14;
final now = DateTime.now();

Constructores const

Asigne a una clase un const constructor y Dart podrá crear instancias realmente inmutables. Todos sus campos también deben ser final.

class Color {
  final int rgb;
  const Color(this.rgb);
}

Instancias const compartidas

Dos objetos const idénticos son exactamente la misma instancia en memoria. Dart los reutiliza, lo que ahorra espacio y tiempo.

const a = Color(0);
const b = Color(0);
print(identical(a, b)); // true

Superficial frente a profunda

Un campo final impide la reasignación, pero no congela aquello a lo que apunta. Una List final todavía puede recibir elementos.

final nums = [1, 2];
nums.add(3); // allowed!

El objetivo de la inmutabilidad profunda

La deep immutability significa que nada de lo que se pueda alcanzar desde el objeto puede cambiar. Para conseguirla por completo necesita algo más que final.

Congele las colecciones

Envuelva una lista en List.unmodifiable para que cualquier intento de añadir o eliminar elementos lance una excepción. Así, toda la estructura permanece congelada.

final tags = List.unmodifiable([1, 2]);
tags.add(3); // throws at runtime

Literales de colección const

Anteponer const a un literal crea una colección profundamente inmutable en tiempo de compilación. No se puede modificar de ninguna manera.

const days = ['Mon', 'Tue'];
// days.add(...) is forbidden

Por qué es importante

Los datos inmutables son seguros para los hilos, fáciles de almacenar en caché y adecuados para la state management en Flutter. Los errores provocados por mutaciones inesperadas desaparecen.

Comprobación rápida

Una última comprobación sobre final y la inmutabilidad.

Resumen

Ha aprendido que final bloquea un campo, const bloquea los valores de tiempo de compilación y que la inmutabilidad profunda requiere colecciones unmodifiable o const. 🎉

Gratis para empezar

Aprende Dart con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Campos final e inmutabilidad profunda» es gratis?

Sí — el texto completo de «Campos final e inmutabilidad profunda» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Campos final e inmutabilidad profunda»?

Construya objetos que nunca cambien Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Dart Academy?

No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Campos final e inmutabilidad profunda»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Dart Academy?

Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Campos final e inmutabilidad profunda
  2. Clases sealed y switch exhaustivo
  3. Modificadores base, interface y final
  4. copyWith e igualdad por valor
← Volver a Dart Academy