Agent-skills-standard flutter-dependency-injection
Configure automated service locator setup using injectable and get_it. Use when wiring dependency injection with injectable and get_it in Flutter. (triggers: **/injection.dart, **/locator.dart, GetIt, injectable, singleton, module, lazySingleton, factory)
install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/flutter/flutter-dependency-injection" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-flutter-dependency-injection && rm -rf "$T"
manifest:
skills/flutter/flutter-dependency-injection/SKILL.mdsource content
Dependency Injection
Priority: P1 (HIGH)
Structure
core/injection/ ├── injection.dart # Initialization & setup └── modules/ # Third-party dependency modules (Dio, Storage)
Implementation Workflow
- Annotate classes — Use
annotations; avoid manual registry calls.@injectable - Choose scope — Default to
for repositories, services, and data sources (init on demand).@LazySingleton - Register BLoCs as factories — Use
(Factory) for BLoCs to ensure state resets per instance. Never use@injectable
for BLoCs.@Singleton() - Inject abstractions — Always register implementations as abstract interfaces (
).as: IService - Register third-party deps — Use
for external instances (Dio, Hive, SharedPreferences).@module - Prefer constructor injection — Use mandatory constructor parameters;
resolves them automatically.injectable
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
Calls: Inject via constructor instead of calling GetIt in UIgetItbuild() - No
BLoCs: Always use@Singleton
(Factory) to ensure state resets@injectable - No Concrete Class Injection: Always inject abstract interface (e.g.,
)IOrderRepository - No Manual Registration: Use
annotations instead of manual@injectable
calls in production codegetIt.register
Related Topics
layer-based-clean-architecture | testing