run method
Runs the task operation and returns the result
Implementation
CancelableOperation<T> run({OnTaskEvent? onEvent}) {
if (_operation != null) {
_operation?.cancel();
_operation = null;
}
void onValue(T value) {
result = TaskResult(value: value);
_status = TaskStatus.completed;
onEvent?.call(TaskCompleted(this));
}
void onError(error, StackTrace stackTrace) {
if (status != TaskStatus.cancelled) {
if (error is E) {
result = TaskResult(error: error, stackTrace: stackTrace);
}
_status = TaskStatus.failed;
onEvent?.call(TaskFailed(this, error, stackTrace));
}
}
void onCancel() {
result = null;
if (status != TaskStatus.cancelled) {
_status = TaskStatus.cancelled;
onEvent?.call(TaskCancelled(this));
}
}
result = null;
_operation = CancelableOperation.fromFuture(execute())
..then(
onValue,
onError: onError,
onCancel: onCancel,
);
return _operation!;
}