인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

flutter-dependency-injection

flutter-dependency-injection

Configure service locator setup using injectable and get_it in Flutter. Use when wiring dependency injection with get_it or injectable.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: flutter-dependency-injection description: Configure service locator setup using injectable and get_it in Flutter. Use when wiring dependency injection with get_it or injectable. metadata: triggers: files: - '/injection.dart' - '/locator.dart' keywords: - GetIt - injectable - singleton - module - lazySingleton - factory

Dependency Injection

Priority: P1 (HIGH)

Structure

core/injection/
├── injection.dart  # Initialization & setup
└── modules/        # Third-party dependency modules (Dio, Storage)

Implementation Workflow

  1. Annotate classes — Use @injectable annotations; avoid manual registry calls.
  2. Choose scope — Default to @LazySingleton for repositories, services, and data sources (init on demand).
  3. Register BLoCs as factories — Use @injectable (Factory) for BLoCs to ensure state resets per instance. Never use @Singleton() for BLoCs.
  4. Inject abstractions — Always register implementations as abstract interfaces (as: IService).
  5. Register third-party deps — Use @module for external instances (Dio, Hive, SharedPreferences).
  6. Prefer constructor injection — Use mandatory constructor parameters; injectable resolves them automatically.

Registration & Test Mock Examples

See implementation examples for module registration and test mock swap patterns.

Reference & Examples

For module configuration and initialization templates: See references/REFERENCE.md.

Anti-Patterns

  • No Inline getIt Calls: Inject via constructor instead of calling GetIt in UI build()
  • No @Singleton BLoCs: Always use @injectable (Factory) to ensure state resets
  • No Concrete Class Injection: Always inject abstract interface (e.g., IOrderRepository)
  • No Manual Registration: Use @injectable annotations instead of manual getIt.register calls in production code

Related Topics

layer-based-clean-architecture | testing

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • Dependency Injection
  • abstract interface

Remediation anchors

  • Remediation anchors: factory registration, fresh CartBloc instance
저장한 Skills