buildChildLifecycle method
Widget
buildChildLifecycle(
- BuildContext context,
- Widget? child, {
- PairViewModelWidgetBuilder<
PVM, VM> ? builder,
Implementation
@protected
Widget buildChildLifecycle(
BuildContext context,
Widget? child, {
PairViewModelWidgetBuilder<PVM, VM>? builder,
}) {
final _builder = builder ??
(this.asSafeType<PairViewModelProviderBuilder<PVM, VM>>())?.buildChild;
return ViewModelBinding<PVM, Tuple2<PVM, VM>>(
selector: (context, pvm) => Tuple2(pvm, context.viewModel<VM>()),
shouldRebuild: (previous, next) {
return !const DeepCollectionEquality()
.equals(previous.item2, next.item2);
},
builder: (context, value, isBinding, child) => LifecycleBuilder<VM>(
create: (context) => context.viewModel<VM>(),
initState: (_) => initViewModel(context, value.item1, value.item2),
initBuild: (_, __) => bindViewModel(context, value.item1, value.item2),
initFrame: (_, __) => initFrame(context, value.item1, value.item2),
dispose: (_, __) => disposeViewModel(context, value.item1, value.item2),
didChangeDependencies: (_, oldValue) {
if (!const DeepCollectionEquality().equals(oldValue, value.item2)) {
changeViewModel(context, value.item1, value.item2, oldValue);
}
},
child: child,
builder: _builder != null
? (_, setStatus, __, child) {
return _builder(context, value.item1, value.item2, child);
}
: null,
),
);
}