¿Cuáles son las formas de usar la palabra clave const en Dart?
sobes.tech AI
Respuesta de la IA
La palabra clave const en Dart se utiliza para crear valores constantes que se determinan en tiempo de compilación y no pueden ser modificados durante la ejecución del programa.
Formas de uso:
-
Como modificador de variable: Se usa para declarar una variable cuyo valor es constante en tiempo de compilación.
const int speedOfLight = 299792458; // Valor constante -
Como modificador de constructor: Un constructor declarado como
constcrea instancias inmutables de la clase, siempre que todos sus campos sean finales (final) o constantes (const).class Point { final double x; final double y; const Point(this.x, this.y); // Constructor constante } const origin = Point(0.0, 0.0); // Creación de una instancia constante -
Para crear colecciones constantes: Se usa para crear listas, conjuntos y mapas cuyo contenido es constante en tiempo de compilación.
const List<int> primeNumbers = [2, 3, 5, 7, 11]; // Lista constante const Set<String> constants = {'pi', 'e', 'phi'}; // Conjunto constante const Map<String, double> mathConstants = { 'pi': 3.14159, 'e': 2.71828 }; // Mapa constante -
En contextos donde se espera un valor constante: Por ejemplo, al crear widgets en Flutter, donde los widgets constantes pueden ser optimizados.
// En el contexto de Flutter const Text('Hello, World!'); // Widget constante
Diferencias con final:
constdefine un valor conocido en tiempo de compilación.finaldefine un valor que se asigna solo una vez en tiempo de ejecución y no puede ser cambiado después.
| Característica | const |
final |
|---|---|---|
| Tiempo de inicialización | En tiempo de compilación | En tiempo de ejecución (una sola vez) |
| Inmutabilidad del valor | Inmutable | Se asigna una vez, luego inmutable |
| Aplicación a instancias | Crea una instancia constante (si el constructor es const) |
Crea una referencia inmutable a un objeto |
| Aplicación a colecciones | Crea una colección inmutable con contenido inmutable | Crea una referencia inmutable a una colección (el contenido puede ser mutable) |