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);
});
}