Sobes.tech
Middle

¿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:

  1. 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
    
  2. Como modificador de constructor: Un constructor declarado como const crea 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
    
  3. 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
    
  4. 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:

  • const define un valor conocido en tiempo de compilación.
  • final define 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)