Skip to main content

dispose-fields

added in: 1.3.0
warning

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

Not disposing fields that have a dispose method might lead to memory leaks and should be avoided.

info

This rule will trigger for any field that has dispose, close or cancel methods not called inside the widget's dispose.

Example

❌ Bad:

class SomeDisposable implements Disposable {

void dispose() {}
}

class _ShinyWidgetState extends State<ShinyWidget> {
final _someDisposable = SomeDisposable();
final _anotherDisposable = SomeDisposable(); // LINT

void dispose() {
_someDisposable.dispose();

super.dispose();
}
}

✅ Good:

class SomeDisposable implements Disposable {

void dispose() {}
}

class _ShinyWidgetState extends State<ShinyWidget> {
final _someDisposable = SomeDisposable();
final _anotherDisposable = SomeDisposable();

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

super.dispose();
}
}