RxCommandListener<TParam, TResult> constructor

RxCommandListener<TParam, TResult>(RxCommand<TParam, TResult> command, { void onValue(TResult value), void onIsBusyChange(bool isBusy), void onIsBusy(), void onNotBusy(), void onError(Exception ex), void onCanExecuteChange(bool state), void onResult(CommandResult<TResult> result), Duration debounceDuration })

Implementation

RxCommandListener(this.command,{
  this.onValue,
  this.onIsBusyChange,
  this.onIsBusy,
  this.onNotBusy,
  this.onError,
  this.onCanExecuteChange,
  this.onResult,
  this.debounceDuration,}
) {
  if (debounceDuration == null) {
    if (onValue != null) {
      valueSubscription = command.listen(onValue);
    }

    if (onResult != null) {
      resultsSubscription = command.results.listen(onResult);
    }

    if (onIsBusyChange != null) {
      busyChangeSubscription = command.isExecuting.listen(onIsBusyChange);
    }
    if (onIsBusy != null || onNotBusy != null) {
      busySubscription =
          command.isExecuting.listen((isBusy) {
            return isBusy ? this?.onIsBusy() : this.onNotBusy();
          });
    }
  } else {
    if (onValue != null) {
      valueSubscription = command.debounce(debounceDuration).listen(onValue);
      if (onResult != null && debounceDuration != null) {
        resultsSubscription = command.results.debounce(debounceDuration).listen(onResult);
      }

      if (onIsBusyChange != null) {
        busyChangeSubscription =
            command.isExecuting.debounce(debounceDuration).listen(onIsBusyChange);
      }

      if (onIsBusy != null && onNotBusy != null) {
        busySubscription = command.isExecuting
            .debounce(debounceDuration)
            .listen((isBusy) => isBusy ? this?.onIsBusy : this.onNotBusy);
      }
    }

    if (onError != null) {
      errorSubscription = command.thrownExceptions.listen(onError);
    }

    if (onCanExecuteChange != null) {
      canExecuteStateSubscription = command.canExecute.listen(onCanExecuteChange);
    }
  }
}