mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 05:25:19 +00:00
40 lines
1.1 KiB
Dart
40 lines
1.1 KiB
Dart
import 'package:cherrypick/cherrypick.dart';
|
||
|
||
/// Ваш сервис с освобождением ресурсов
|
||
class MyService implements Disposable {
|
||
bool wasDisposed = false;
|
||
|
||
@override
|
||
void dispose() {
|
||
// Например: закрыть соединение, остановить таймер, освободить память
|
||
wasDisposed = true;
|
||
print('MyService disposed!');
|
||
}
|
||
|
||
void doSomething() => print('Doing something...');
|
||
}
|
||
|
||
/// Пример модуля CherryPick
|
||
class ModuleImpl extends Module {
|
||
@override
|
||
void builder(Scope scope) {
|
||
bind<MyService>().toProvide(() => MyService()).singleton();
|
||
}
|
||
}
|
||
|
||
void main() {
|
||
final scope = CherryPick.openRootScope();
|
||
|
||
// Регистрируем биндинг (singleton для примера)
|
||
scope.installModules([
|
||
ModuleImpl(),
|
||
]);
|
||
|
||
// Получаем зависимость
|
||
final service = scope.resolve<MyService>();
|
||
service.doSomething(); // «Doing something...»
|
||
|
||
// Освобождаем все ресурсы
|
||
scope.dispose();
|
||
print('Service wasDisposed = ${service.wasDisposed}'); // true
|
||
} |