Group: errors
Maturity: experimental
Linter v1.1
Since info is static, may be staleDO NOT use BuildContext across asynchronous gaps.
Storing BuildContext
for later usage can easily lead to difficult to diagnose
crashes. Asynchronous gaps are implicitly storing BuildContext
and are some of
the easiest to overlook when writing code.
When a BuildContext
is used from a StatefulWidget
, the mounted
property
must be checked after an asynchronous gap.
GOOD:
void onButtonTapped(BuildContext context) {
Navigator.of(context).pop();
}
BAD:
void onButtonTapped(BuildContext context) async {
await Future.delayed(const Duration(seconds: 1));
Navigator.of(context).pop();
}
GOOD:
class _MyWidgetState extends State<MyWidget> {
...
void onButtonTapped() async {
await Future.delayed(const Duration(seconds: 1));
if (!mounted) return;
Navigator.of(context).pop();
}
}