Skip to main content

avoid-disposing-late-fields

effort: 4m
pro+

Warns when a late widget state field is disposed in dispose method.

Disposing a late field can lead to either an exception related to the field not being initialized or to an unnecessary initialization of the field followed by its immediate disposal. Consider declaring such fields as nullable instead of late.

info

This rule will trigger for a dispose, close or cancel method calls inside the widget's dispose.

Example

❌ Bad:

class _ShinyWidgetState extends State<ShinyWidget> {
late final SomeDisposable _someDisposable;

void dispose() {
// LINT: Avoid calling 'dispose' on a late field. Try making it nullable instead.
_someDisposable.dispose();

super.dispose();
}
}

✅ Good:

class _ShinyWidgetState extends State<ShinyWidget> {
SomeDisposable? _someDisposable;

void dispose() {
_someDisposable?.dispose();

super.dispose();
}
}