force_inject_flutter 0.2.0
force_inject_flutter: ^0.2.0 copied to clipboard
Flutter integration for ForceInject – scoped DI made clean.
📱 forceinject_flutter #
Flutter integration for ForceInject — a zero-runtime-dependency DI container inspired by .NET Core.
✨ Features #
ForceScopeWidget— Automatically manages scoped lifetimes tied to widget lifecycleForceViewModelBuilder<T>— Injects and rebuilds using reactiveValueNotifierViewModels- No state management dependency — works with any pattern (MVVM, Clean, Redux, etc.)
- Pure Dart and Flutter — lightweight and testable
🔁 ViewModel Lifecycle Support #
ViewModels injected via ForceViewModelBuilder can now:
- Implement
ForceInitializableViewModelto runinit(BuildContext context)after mount - Implement
Disposableto be cleaned up automatically when the widget tree is disposed
class MyViewModel implements ForceInitializableViewModel, Disposable {
@override
void init(BuildContext context) {
print('Initialized with: ${Localizations.localeOf(context)}');
}
@override
void dispose() {
print('Cleaned up');
}
}
🧪 Example #
Check out the scoped_widget_flutter_di example for a complete working app.
ForceScopeWidget(
provider: provider,
child: ForceViewModelBuilder<MyViewModel>(
builder: (context, vm) => Text('${vm.count.value}'),
),
)
📦 Requirements #
- Flutter 3.10+
- Dart 3.6+
force_inject>= 0.2.0
💡 Use Cases #
- Scoped ViewModels per screen
- Widget-driven lifetime management
- Modular app architecture
🧰 No Code Generation #
ForceInject and its Flutter integration work without:
build_runner- annotations
- mirrors
- codegen
Use pure constructor-based registration — just like .NET Core DI.
Support me (@diegomgarcia) with Patreon #
Or make a donation buying me a coffee:
📜 License #
MIT — use it freely in commercial or personal projects.
Made with ❤️ by @diegomgarcia

