buildLifecycle method

  1. @protected
Widget buildLifecycle(
  1. BuildContext context,
  2. Widget? child, {
  3. ViewModelWidgetBuilder<VM>? builder,
})

Implementation

@protected
Widget buildLifecycle(
  BuildContext context,
  Widget? child, {
  ViewModelWidgetBuilder<VM>? builder,
}) {
  final _builder =
      builder ?? this.asSafeType<ViewModelProviderBuilder<VM>>()?.buildChild;

  return ViewModelBinding<VM, VM>(
    selector: (context, vm) => vm,
    builder: (context, value, isBinding, child) => LifecycleBuilder<VM>(
      create: (context) => context.viewModel<VM>(),
      initState: (_) => initViewModel(context, value),
      initBuild: (_, __) => bindViewModel(context, value),
      initFrame: (_, __) => initFrame(context, value),
      dispose: (_, __) => disposeViewModel(context, value),
      didChangeDependencies: (_, oldValue) {
        if (!const DeepCollectionEquality().equals(oldValue, value)) {
          changeViewModel(context, value, oldValue);
        }
      },
      child: child,
      builder: _builder != null
          ? (_, setStatus, __, child) {
              return _builder(context, value, child);
            }
          : null,
    ),
  );
}