Pular para o conteúdo principal

sdk_version_ui_as_code_in_const_context

Detalhes sobre o diagnóstico 'sdk_version_ui_as_code_in_const_context' produzido pelo analisador do Dart.

The if and spread elements weren't supported in constant expressions until version 2.5.0, but this code is required to be able to run on earlier versions.

Descrição

#

O analisador produz este diagnóstico quando um elemento if ou de spread dentro de um contexto constanteConstant contextUma região do código em que a keyword const está implícita e tudo dentro dessa região precisa ser constante. Saiba mais é encontrado em código que tem uma restrição de SDK cujo limite inferior é menor que 2.5.0. Usar um elemento if ou de spread dentro de um contexto constanteConstant contextUma região do código em que a keyword const está implícita e tudo dentro dessa região precisa ser constante. Saiba mais não era suportado em versões anteriores, então esse código não vai conseguir rodar em versões anteriores do SDK.

Exemplo

#

Aqui está um exemplo de um pubspec que define uma restrição de SDK com limite inferior menor que 2.5.0:

yaml
environment:
  sdk: '>=2.4.0 <2.6.0'

No pacote que tem esse pubspec, código como o seguinte produz este diagnóstico:

dart
const a = [1, 2];
const b = [...a];

Correções comuns

#

Se você não precisa oferecer suporte a versões antigas do SDK, então pode aumentar a restrição de SDK para permitir o uso da sintaxe:

yaml
environment:
  sdk: '>=2.5.0 <2.6.0'

Se você precisa oferecer suporte a versões antigas do SDK, então reescreva o código para não usar esses elementos:

dart
const a = [1, 2];
const b = [1, 2];

Se isso não for possível, altere o código para que o elemento não fique em um contexto constante:

dart
const a = [1, 2];
var b = [...a];

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.