inject_flutter 1.1.0
inject_flutter: ^1.1.0 copied to clipboard
Flutter integration for inject_annotation. Provides ViewModelFactory and ViewModelBuilder to inject ViewModels into widgets with automatic lifecycle management.
1.1.0 #
ViewModelInitializernow accepts an asynchronousinitcallback (its type widened fromvoid Function(T)toFutureOr<void> Function(T)). An asynchronousinitis awaited via aFutureBuilder, so a long-runninginitno longer races the first frame. Synchronousinitcallbacks keep working unchanged.- Added optional
loadinganderrorwidgets toViewModelFactory/ViewModelBuilder:loadingis shown while an asynchronousinitruns anderror(aViewModelErrorBuilder) when it fails. Without anerrorbuilder, an init failure is reported throughFlutterError.reportErrorinstead of being silently dropped. Both are ignored for a synchronousinit.
viewModelFactory(
init: (viewModel) => viewModel.load(), // may be sync or async
loading: const Center(child: CircularProgressIndicator()),
error: (context, error, _) => Center(child: Text('$error')),
builder: (context, viewModel, _) => /* widget */,
);
1.0.2 #
- Added support for ViewModel initialization via an optional
initcallback inViewModelFactory
@override
Widget build(BuildContext context) {
return viewModelFactory(
// Initialize the ViewModel when it's created
init: (viewModel) {
// Perfect place to trigger data loading
viewModel.loadData();
},
builder: (context, viewModel, _) {
return Scaffold(
appBar: AppBar(title: Text(viewModel.title)),
body: viewModel.isLoading
? const CircularProgressIndicator()
: ListView.builder(
itemCount: viewModel.items.length,
itemBuilder: (context, index) =>
ItemTile(item: viewModel.items[index]),
),
);
},
);
}
1.0.1 #
- inject_annotation version 1.0.0 and inject_generator version 1.0.0
- update README
1.0.0 #
- initial release