execute method
- @override
- [TParam param]
override
Calls the wrapped handler function with an option input parameter
Implementation
@override
execute([TParam param]) {
if (!_canExecute) {
return;
}
if (_isRunning) {
return;
} else {
_isRunning = true;
_canExecuteSubject.add(false);
}
_commandResultsSubject.add(CommandResult<TResult>(
_emitLastResult ? lastResult : null, null, true));
var inputObservable = _observableProvider(param);
inputObservable.materialize().listen(
(notification) {
if (notification.isOnData) {
_resultsSubject.add(notification.value);
_commandResultsSubject
.add(CommandResult(notification.value, null, true));
lastResult = notification.value;
} else if (notification.isOnError) {
if (throwExceptions) {
_resultsSubject.addError(notification.error);
_commandResultsSubject.addError(notification.error);
} else {
_commandResultsSubject
.add(CommandResult<TResult>(null, notification.error, false));
}
} else if (notification.isOnDone) {
_commandResultsSubject.add(CommandResult(lastResult, null, false));
_isRunning = false;
_canExecuteSubject.add(!_executionLocked);
}
},
onError: (error) {
print(error);
},
);
}