Sobes.tech
Junior

Qual é a diferença entre var e dynamic em Dart?

sobes.tech IA

Resposta da IA

var define uma variável cujo tipo é automaticamente determinado com base no valor atribuído e permanece fixo. dynamic define uma variável cujo tipo pode mudar durante a execução do programa.

Propriedade var dynamic
Atribuição de tipo Durante a compilação (estática) Durante a execução (dinâmica)
Mudança de tipo Não é possível após a inicialização Pode ocorrer a qualquer momento
Verificação de tipo Realizada na compilação Realizada na execução
Desempenho Ótimo Pode ser ligeiramente inferior devido à verificação em tempo de execução

Exemplo de uso de var:

// O tipo x é definido como int na compilação
var x = 10;
// A próxima linha causará um erro de compilação,
// pois o tipo de x já está definido como int
// x = "olá";

Exemplo de uso de dynamic:

// O tipo y pode mudar durante a execução
dynamic y = 10;
// y agora é do tipo String
y = "olá";
// y agora é do tipo bool
y = true;

O uso de var é preferível quando o tipo da variável é conhecido antecipadamente, pois garante segurança de tipos e melhor desempenho. dynamic deve ser usado apenas nos casos em que o tipo realmente não é conhecido até o tempo de execução (por exemplo, ao trabalhar com JSON ou reflexão), mas isso pode levar a erros em tempo de execução se operações forem realizadas sobre um valor de tipo incompatível.