Sobes.tech
Middle

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.