import 'package:flutter/widgets.dart';

abstract class Disposable {
  void init(State state);
  void dispose(State state);
}

mixin DisposableManagerMixin<T extends StatefulWidget> on State<T> {
  @override
  initState() {
    super.initState();
    for (final d in disposables) {
      d.init(this);
    }
  }

  @override
  dispose() {
    for (final d in disposables) {
      d.dispose(this);
    }
    super.dispose();
  }

  List<Disposable> get disposables;
}