Sobes.tech
Middle

Quais são as formas de usar a palavra-chave const em Dart?

sobes.tech IA

Resposta da IA

A palavra-chave const em Dart é usada para criar valores constantes que são determinados em tempo de compilação e não podem ser alterados durante a execução do programa.

Formas de uso:

  1. Como modificador de variável: Usado para declarar uma variável cujo valor é constante em tempo de compilação.

    const int speedOfLight = 299792458; // Valor constante
    
  2. Como modificador de construtor: Um construtor declarado como const cria instâncias imutáveis da classe, desde que todos os seus campos sejam finais (final) ou constantes (const).

    class Point {
      final double x;
      final double y;
    
      const Point(this.x, this.y); // Construtor constante
    }
    
    const origin = Point(0.0, 0.0); // Criação de uma instância constante
    
  3. Para criar coleções constantes: Usado para criar listas, conjuntos e mapas cujo conteúdo é constante em tempo de compilação.

    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. Em contextos onde se espera um valor constante: Por exemplo, ao criar widgets no Flutter, onde widgets constantes podem ser otimizados.

    // No contexto do Flutter
    const Text('Hello, World!'); // Widget constante
    

Diferenças de final:

  • const define um valor conhecido em tempo de compilação.
  • final define um valor que é atribuído apenas uma vez em tempo de execução e não pode ser alterado após.
Característica const final
Tempo de inicialização Em tempo de compilação Em tempo de execução (uma vez)
Imutabilidade do valor Inalterável Atribuído uma vez, depois inalterável
Aplicação a instâncias Cria uma instância constante (se o construtor for const) Cria uma referência inalterável a um objeto
Aplicação a coleções Cria uma coleção inalterável com conteúdo inalterável Cria uma referência inalterável a uma coleção (o conteúdo pode ser mutável)