null_ check_ on_ nullable_ type_ parameter
Learn about the null_check_on_nullable_type_parameter linter rule.
Don't use null check on a potentially nullable
type parameter.
Details
#
DON'T use null check on a
potentially nullable type parameter.
Given a generic type parameter T which has a
nullable bound (e.g., the default bound of
Object?), it is very easy to introduce erroneous
null checks when working with a variable of type
T?. Specifically, it is not uncommon to have
T? x; and want to assert that x has
been set to a valid value of type T. A common
mistake is to do so using x!. This is almost
always incorrect, since if T is a nullable type,
x may validly hold null as a value
of type T.
BAD:
T run<T>(T callback()) {
T? result;
(() { result = callback(); })();
return result!;
}
GOOD:
T run<T>(T callback()) {
T? result;
(() { result = callback(); })();
return result as T;
}
Enable
#
To enable the
null_check_on_nullable_type_parameter rule, add
null_check_on_nullable_type_parameter
under
linter > rules in your
analysis_options.yaml
file:
linter:
rules:
- null_check_on_nullable_type_parameter
If you're instead using the YAML map syntax to configure
linter rules, add
null_check_on_nullable_type_parameter: true under
linter > rules:
linter:
rules:
null_check_on_nullable_type_parameter: true
除非另有说明,文档之所提及适用于 Dart 3.12.2 版本报告页面问题.