Jaké nástroje pro injekci závislostí (DI) používáte v produkci?
sobes.tech AI
Odpověď od AI
Nejčastěji používám GetIt ve spojení s injectable.
GetIt je jednoduchý Service Locator, který se snadno integruje s jinými frameworky. Poskytuje standardní metody pro registraci služeb:
// Registrace singletonu
GetIt.instance.registerSingleton<ApiService>(ApiService());
// Registrace továrny
GetIt.instance.registerFactory<UserRepository>(() => UserRepository());
injectable je generátor kódu, který umožňuje anotovat třídy a generovat kód pro GetIt, což výrazně zjednodušuje proces vkládání závislostí:
// Příklad anotace třídy pro GetIt s pomocí injectable
@lazySingleton
class ApiService {}
// Příkaz pro generování kódu pro GetIt
// flutter pub run build_runner build
Kombinace těchto nástrojů umožňuje využít výhod jak Service Locatoru (z GetIt), tak Dependency Injection (díky automatickému generování kódu s injectable), což činí DI v projektu lépe spravovatelným a méně náchylným k chybám.
Také jsem použil Provider pro jednoduché případy nebo v projektech, kde již existuje správa stavu na základě Provider, protože může sloužit i pro DI. Nicméně pro větší podnikové aplikace dávám přednost páru GetIt/injectable.