builder method

Widget builder(
  1. Widget builder(), {
  2. void initState()?,
  3. void onAfterBuild()?,
  4. void dispose()?,
  5. ShouldRebuild? shouldRebuild,
  6. Object? watch()?,
  7. String? debugPrintWhenRebuild,
  8. String? tag,
})

Builds a widget that listens to all injected instances in this list.

Implementation

Widget builder(
  Widget Function() builder, {
  void Function()? initState,
  void Function()? onAfterBuild,
  void Function()? dispose,
  ShouldRebuild? shouldRebuild,
  Object? Function()? watch,
  String? debugPrintWhenRebuild,
  String? tag,
}) {
  final observables = this;
  SideEffects<dynamic>? sideEffects;
  if (initState != null || onAfterBuild != null || dispose != null) {
    sideEffects = SideEffects<dynamic>(
      initState: initState,
      onAfterBuild: onAfterBuild,
      dispose: dispose,
    );
  }
  return OnBuilder<dynamic>(
    listenToMany: observables,
    sideEffects: sideEffects,
    shouldRebuild: (oldSnap, newSnap) {
      bool shouldRebuildBasedOnTag = true;
      if (tag != null) {
        shouldRebuildBasedOnTag = any((injected) {
          final currentTag = injected.currentNotificationTag;
          return currentTag == null || tag == currentTag;
        });
        if (!shouldRebuildBasedOnTag) {
          return false;
        }
      }
      return shouldRebuild?.call(oldSnap, newSnap) ?? true;
    },
    watch: watch,
    debugPrintWhenRebuild: debugPrintWhenRebuild,
    builder: builder,
  );
}