sdk_ version_ is_ expression_ in_ const_ context
Details about the 'sdk_version_is_expression_in_const_context' diagnostic produced by the Dart analyzer.
The use of an is expression in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions.
Description
#
The analyzer produces this diagnostic when an
is expression inside a
constant contextConstant contextA region of code where the const keyword is implied and
everything within that region must be a constant.
Learn more
is found in code that has an SDK constraint whose lower bound
is less than 2.3.2. Using an is expression in a
constant contextConstant contextA region of code where the const keyword is implied and
everything within that region must be a constant.
Learn more
wasn't supported in earlier versions, so this code won't be
able to run against earlier versions of the SDK.
Example
#Here's an example of a pubspec that defines an SDK constraint with a lower bound of less than 2.3.2:
environment:
sdk: '>=2.1.0 <2.4.0'
In the package that has that pubspec, code like the following produces this diagnostic:
const Object x = 4;
const y = x is int ? 0 : 1;
Common fixes
#If you don't need to support older versions of the SDK, then you can increase the SDK constraint to allow the expression to be used:
environment:
sdk: '>=2.3.2 <2.4.0'
If you need to support older versions of the SDK, then either
rewrite the code to not use the is operator, or,
if that isn't possible, change the code so that the
is expression isn't in a
constant contextConstant contextA region of code where the const keyword is implied and
everything within that region must be a constant.
Learn more:
const Object x = 4;
var y = x is int ? 0 : 1;
除非另有说明,文档之所提及适用于 Dart 3.12.2 版本报告页面问题.