mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-23 21:13:35 +00:00
BREAKING CHANGE: - Removed the deprecated CherryPickLogger interface from cherrypick - Logger/adapters (e.g., talker_cherrypick_logger) must now implement CherryPickObserver - talker_cherrypick_logger: replace TalkerCherryPickLogger with TalkerCherryPickObserver - All usages, docs, tests migrated to observer API - Improved test mocks and integration tests for observer pattern - Removed obsolete files: cherrypick/src/logger.dart, talker_cherrypick_logger/src/talker_cherrypick_logger.dart - Updated README and example usages for new CherryPickObserver model This refactor introduces a unified observer pattern (CherryPickObserver) to handle all DI lifecycle events, replacing the limited info/warn/error logger pattern. All external logging adapters and integrations must migrate to use CherryPickObserver.
38 lines
1.0 KiB
Dart
38 lines
1.0 KiB
Dart
import 'package:cherrypick/cherrypick.dart';
|
|
|
|
/// Example of a simple service class.
|
|
class UserRepository {
|
|
String getUserName() => 'Sergey DI';
|
|
}
|
|
|
|
/// DI module for registering dependencies.
|
|
class AppModule extends Module {
|
|
@override
|
|
void builder(Scope currentScope) {
|
|
bind<UserRepository>().toInstance(UserRepository());
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
// Set a global logger for the DI system
|
|
CherryPick.setGlobalObserver(PrintCherryPickObserver());
|
|
|
|
// Open the root scope
|
|
final rootScope = CherryPick.openRootScope();
|
|
|
|
// Register the DI module
|
|
rootScope.installModules([AppModule()]);
|
|
|
|
// Resolve a dependency (service)
|
|
final repo = rootScope.resolve<UserRepository>();
|
|
print('User: ${repo.getUserName()}');
|
|
|
|
// Work with a sub-scope (create/close)
|
|
final subScope = rootScope.openSubScope('feature.profile');
|
|
subScope.closeSubScope('feature.profile');
|
|
|
|
// Demonstrate disabling and re-enabling logging
|
|
CherryPick.setGlobalObserver(SilentCherryPickObserver());
|
|
rootScope.resolve<UserRepository>(); // now without logs
|
|
}
|