🧩 force_inject_provider
A plugin that integrates the ForceInject DI container with the popular Provider package in Flutter.
🛠️ Easily create scoped dependency injection and reactive
ChangeNotifier
ViewModels.
✨ Features
- ✔️
ProviderScope
to manage lifecycle-aware DI scopes - ✔️
ProviderNotifierBuilder<T>
to inject and listen toChangeNotifier
s - ✔️ Automatically disposes ViewModels
- ✔️ Clean integration with
force_inject
🚀 Getting Started
1. Define your services:
final services = ServiceCollection();
services.addScoped<CounterViewModel, CounterViewModel>();
ServiceProvider.registerConstructor<CounterViewModel>(
() => CounterViewModel(),
[],
);
final provider = services.buildServiceProvider();
2. Wrap your app or page in a ProviderScope
:
return ProviderScope(
create: () => provider.createScope(),
child: MyApp(),
);
3. Use ProviderNotifierBuilder<T>
to inject your ViewModel:
ProviderNotifierBuilder<CounterViewModel>(
builder: (context, viewModel, _) => Text('${viewModel.count}'),
)
📦 Example
See example/minimal_provider_di
for a full working Flutter app.
📜 License
MIT — Free to use, modify, and distribute.