watch method

void Function() watch(
  1. ZenController controller, {
  2. void onData(
    1. T?
    )?,
  3. void onLoading(
    1. bool
    )?,
  4. void onError(
    1. Object?
    )?,
  5. String? name,
})

Unified watch method for all effect aspects using ZenWorkers directly

Implementation

void Function() watch(
  ZenController controller, {
  void Function(T?)? onData,
  void Function(bool)? onLoading,
  void Function(Object?)? onError,
  String? name,
}) {
  if (isDisposed) {
    return () {}; // Return no-op disposer for disposed effects
  }

  final disposers = <ZenWorkerHandle>[];

  if (onData != null) {
    final handle = ZenWorkers.ever<T?>(_data, onData);
    disposers.add(handle);
  }

  if (onLoading != null) {
    final handle = ZenWorkers.ever<bool>(_isLoading, onLoading);
    disposers.add(handle);
  }

  if (onError != null) {
    final handle = ZenWorkers.ever<Object?>(_error, onError);
    disposers.add(handle);
  }

  // Return combined disposer
  return () {
    for (final handle in disposers) {
      handle.dispose();
    }
  };
}