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:
environment:
sdk: '>=2.4.0 <2.6.0'
No pacote que tem esse pubspec, código como o seguinte produz este diagnóstico:
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:
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:
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:
const a = [1, 2];
var b = [...a];
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
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ê.