RxCommand<TParam, TResult> constructor

RxCommand<TParam, TResult>(BehaviorSubject<CommandResult<TResult>> _commandResultsSubject, Observable<bool> canExecuteRestriction, bool _emitLastResult)

Implementation

RxCommand(this._commandResultsSubject, Observable<bool> canExecuteRestriction,  this._emitLastResult):super(_commandResultsSubject.observable)
{
    this
      .where( (x) => x.hasError)
        .listen((x) => _thrownExceptionsSubject.add(x.error));

    this
      .listen((x) => _isExecutingSubject.add(x.isExecuting));

     final _canExecuteParam = canExecuteRestriction == null ? new Observable<bool>.just(true)
                                                : canExecuteRestriction.handleError((error)
                                                  {
                                                      if (error is Exception)
                                                      {
                                                        _thrownExceptionsSubject.add(error);
                                                      }
                                                  })
                                                  .distinct();



    _canExecuteParam.listen((canExecute){
      _canExecute = canExecute && (!_isRunning);
      _executionLocked = !canExecute;
      _canExecuteSubject.add(_canExecute);
    });


}