disposable<T extends Disposable> method

ProviderDefinition<T> disposable<T extends Disposable>(
  1. ProviderCreate<T> create, {
  2. Qualifier? qualifier,
  3. bool createdAtStart = false,
  4. bool override = false,
})

Defines a Disposable as single create that will be automatically closed.

The dispose method of the instance created by the create will be called when the global context of the koin is finalized.

Implement Disposable interface when the business classes use streams or it is necessary to finalize some internal component.

Implement the Disposable interface:

class Bloc implements Disposable {

@override
void dispose() {
  // close streams
  // ...
  }
}

Define the bloc:

var blocModule = Module()..bloc((s) => Bloc());

Implementation

ProviderDefinition<T> disposable<T extends Disposable>(
  ProviderCreate<T> create, {
  Qualifier? qualifier,
  bool createdAtStart = false,
  bool override = false,
}) {
  var beanDefinition = single<T>(create,
      qualifier: qualifier,
      createdAtStart: createdAtStart,
      override: override);

  beanDefinition.onClose((bloc) => bloc.dispose(),
      onDisposeUnitialized: () {});
  return beanDefinition;
}