owning_simple_service_container 1.0.0-dev.2 copy "owning_simple_service_container: ^1.0.0-dev.2" to clipboard
owning_simple_service_container: ^1.0.0-dev.2 copied to clipboard

Provides extensions to simple_service_container for containers to own resources and dispose them via disposable_resource_management.

example/main.dart

// Printing is fine in examples
// ignore_for_file: avoid_print

import 'dart:async';

import 'package:disposable_resource_management/disposable_resource_management.dart';
import 'package:owning_simple_service_container/owning_simple_service_container.dart';

void main() async {
  final services = OwningServiceContainer();

  final disposableService = DisposableService();
  final asyncDisposableService = AsyncDisposableService();
  final asyncDisposableFromAnotherLibrary = AsyncDisposableFromAnotherLibrary();
  final disposableFromAnotherLibrary = DisposableFromAnotherLibrary();

  // Register Disposable or AsyncDisposable services as owned like this
  services.registerDisposable(disposableService);
  services.registerAsyncDisposable(asyncDisposableService);

  // If the service comes from another library/package and does not implement
  // Disposable or AsyncDisposable from disposable_resource_management, then you
  // can specify a custom synchronous or asynchronous disposal method like this:
  services.registerWithDisposer(
    disposableFromAnotherLibrary,
    disposableFromAnotherLibrary.dispose,
  );
  services.registerWithAsyncDisposer(
    asyncDisposableFromAnotherLibrary,
    asyncDisposableFromAnotherLibrary.disposeAsync,
  );

  print('registered services');

  // Use container here...

  print('beginning dispose');

  // Dispose like this if we need to await disposal.
  await services.disposeAsync();

  // Or like this if we don't need to wait for services to dispose.
  unawaited(services.disposeAsync());

  print('finished disposing services');
}

class AsyncDisposableFromAnotherLibrary {
  Future<void> disposeAsync() async {
    print('disposed SomeAsyncDisposableFromAnotherLibrary asynchronously');
  }
}

class AsyncDisposableService with AsyncDisposableMixin {
  @override
  Future<void> onDisposeAsync() async {
    print('disposed AsyncDisposableService asynchronously');
  }
}

class DisposableFromAnotherLibrary {
  void dispose() {
    print('disposed SomeDisposableFromAnotherLibrary');
  }
}

class DisposableService with DisposableMixin {
  @override
  void onDispose() {
    print('disposed DisposableService');
  }
}
0
likes
160
points
165
downloads

Publisher

verified publisherliamrobinson.co.uk

Weekly Downloads

Provides extensions to simple_service_container for containers to own resources and dispose them via disposable_resource_management.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

disposable_resource_management, flutter, simple_service_container

More

Packages that depend on owning_simple_service_container