← スキル一覧に戻る

dependency-injection-getit
by AVRA-CADAVRA
⭐ 0🍴 0📅 2026年1月24日
SKILL.md
name: dependency-injection-getit description: Guides GetIt dependency injection patterns for service registration. Use when creating new services, registering dependencies, or refactoring service architecture.
Dependency Injection with GetIt
Core Pattern
All services must be registered in dependency injection containers using GetIt.
Registration Locations
- Core Services:
lib/injection_container_core.dart - Domain Services:
lib/injection_container.dart - AI Services:
lib/injection_container_ai.dart - Payment Services:
lib/injection_container_payment.dart - Admin Services:
lib/injection_container_admin.dart - Other Modules: Separate containers as needed
Registration Pattern
Basic Registration
// Use registerLazySingleton (NOT registerSingleton)
sl.registerLazySingleton<MyService>(() => MyService(
dependencyService: sl<DependencyService>(),
));
With Dependencies
// Register dependencies BEFORE dependents
sl.registerLazySingleton(() => DependencyService());
sl.registerLazySingleton(() => MyService(
dependencyService: sl<DependencyService>(),
));
Check Before Registration
// Check if already registered to avoid duplicates
if (!sl.isRegistered<MyService>()) {
sl.registerLazySingleton<MyService>(() => MyService(
dependencyService: sl<DependencyService>(),
));
}
With Documentation Comment
// Register MyService (for specific purpose description)
sl.registerLazySingleton<MyService>(() => MyService(
dependencyService: sl<DependencyService>(),
));
Service Constructor Pattern
class MyService {
final DependencyService _dependencyService;
final OptionalService? _optionalService;
MyService({
required DependencyService dependencyService,
OptionalService? optionalService,
}) : _dependencyService = dependencyService,
_optionalService = optionalService;
}
Dependency Order Rules
- Core services first - Register foundational services (StorageService, Logger, Database) before others
- Dependencies before dependents - Always register dependencies before services that depend on them
- Module separation - Register core services, then domain services, then feature services
Common Pitfalls
❌ Circular Dependency:
sl.registerLazySingleton(() => ServiceA(serviceB: sl<ServiceB>()));
sl.registerLazySingleton(() => ServiceB(serviceA: sl<ServiceA>())); // ERROR
❌ Wrong Order:
sl.registerLazySingleton(() => MyService(dep: sl<Dependency>())); // ERROR: Dependency not registered yet
sl.registerLazySingleton(() => Dependency());
❌ Wrong Lifecycle:
sl.registerFactory(() => MyService()); // BAD: Should be singleton
Reference
See existing registrations in:
lib/injection_container_core.dartlib/injection_container.dart
スコア
総合スコア
60/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です