submit<T> method
LevitTaskExecution<T>
submit<T>(
- FutureOr<
T> task(- LevitTaskContext context
- String? id,
- TaskPriority priority = TaskPriority.normal,
- TaskConflictPolicy conflictPolicy = TaskConflictPolicy.reject,
- int retries = 0,
- Duration? retryDelay,
- bool useExponentialBackoff = true,
- void onError(
- Object error,
- StackTrace stackTrace
- TaskCachePolicy<
T> ? cachePolicy, - void onStart()?,
- void onSuccess(
- T result
- void onProgress(
- double progress
- void onCancel()?,
- void onEvent(
- LevitTaskEvent event
- LevitTaskMetadata? metadata,
- String? debugName,
Submits task and returns its execution identity and result.
Implementation
LevitTaskExecution<T> submit<T>(
FutureOr<T> Function(LevitTaskContext context) task, {
String? id,
TaskPriority priority = TaskPriority.normal,
TaskConflictPolicy conflictPolicy = TaskConflictPolicy.reject,
int retries = 0,
Duration? retryDelay,
bool useExponentialBackoff = true,
void Function(Object, StackTrace)? onError,
TaskCachePolicy<T>? cachePolicy,
void Function()? onStart,
void Function(T result)? onSuccess,
void Function(double progress)? onProgress,
void Function()? onCancel,
void Function(LevitTaskEvent event)? onEvent,
LevitTaskMetadata? metadata,
String? debugName,
}) {
_ensureUsable();
if (retries < 0) throw RangeError.range(retries, 0, null, 'retries');
if (retryDelay != null && retryDelay.isNegative) {
throw ArgumentError.value(retryDelay, 'retryDelay');
}
final taskId = id ?? _generateTaskId();
final taskMetadata = metadata ??
(debugName == null
? LevitTaskMetadata.none
: LevitTaskMetadata(debugName: debugName));
final config = _TaskExecutionConfig(
task: task,
priority: priority,
retries: retries,
retryDelay: retryDelay,
useExponentialBackoff: useExponentialBackoff,
onError: onError,
cachePolicy: cachePolicy,
onStart: onStart,
onSuccess:
onSuccess == null ? null : (dynamic value) => onSuccess(value as T),
onProgress: onProgress,
onCancel: onCancel,
onEvent: onEvent,
metadata: taskMetadata,
runsInIsolate: false,
);
return _submitConfig<T>(
taskId: taskId,
config: config,
conflictPolicy: conflictPolicy,
);
}