auto_disposal
auto_disposal is a small Flutter utility mixin that helps State classes
clean up common resources automatically in dispose().
It reduces repetitive disposal code and keeps widget lifecycle cleanup in one place.
What It Supports
AutoDisposalMixin can register and dispose/cancel these types:
StreamSubscriptionAnimationControllerFocusNodeTextEditingControllerScrollControllerTickerOverlayEntry(remove + dispose)TimerStreamControllerChangeNotifier
It also supports custom cleanup with autoDisposeCallback(...).
Usage
import 'dart:async';
import 'package:auto_disposal/auto_disposal.dart';
import 'package:flutter/material.dart';
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage>
with AutoDisposalMixin<MyHomePage> {
late final TextEditingController controller =
autoDispose(TextEditingController());
late final StreamController<int> streamController =
autoDispose(StreamController<int>());
@override
void initState() {
super.initState();
autoDisposeCallback(() {
// Any custom cleanup logic.
});
}
@override
Widget build(BuildContext context) {
return TextField(controller: controller);
}
}
Notes
- Registered callbacks are executed in reverse order during
dispose(). - Async cleanup callbacks are supported.
- See the complete example in
example/lib/main.dart.