enqueue static method
Future<String>
enqueue(
- String name, {
- Map<
String, dynamic> input = const {}, - TaskConstraints? constraints,
- RetryPolicy? retry,
- TaskPriority priority = TaskPriority.normal,
- List<
String> tags = const [], - Duration? initialDelay,
- String? uniqueId,
- UniquePolicy? uniquePolicy,
- TaskTimeout? timeout,
- DedupPolicy? dedupPolicy,
- ConcurrencyControl? concurrency,
- RateLimit? rateLimit,
- TaskQueue queue = TaskQueue.default_,
- TaskEncryption? encryption,
- TimeWindow? window,
Enqueues a one-off task for execution with advanced options.
Supports: timeout, deduplication, concurrency control, rate limiting, priority queues, encryption, and time windows.
Returns the execution ID which can be used to monitor or cancel the task. Example:
final id = await TaskFlow.enqueue(
'syncData',
input: {'userId': '123'},
constraints: TaskConstraints(network: NetworkConstraint.connected),
retry: RetryPolicy.exponential(maxAttempts: 3),
timeout: TaskTimeout.moderate,
dedupPolicy: DedupPolicy.byInput(ttl: Duration(minutes: 5)),
concurrency: ConcurrencyControl.limited,
rateLimit: RateLimit.moderate,
queue: TaskQueue.high,
);
Implementation
static Future<String> enqueue(
String name, {
Map<String, dynamic> input = const {},
TaskConstraints? constraints,
RetryPolicy? retry,
TaskPriority priority = TaskPriority.normal,
List<String> tags = const [],
Duration? initialDelay,
String? uniqueId,
UniquePolicy? uniquePolicy,
TaskTimeout? timeout,
DedupPolicy? dedupPolicy,
ConcurrencyControl? concurrency,
RateLimit? rateLimit,
TaskQueue queue = TaskQueue.default_,
TaskEncryption? encryption,
TimeWindow? window,
}) async {
_ensureInitialized();
// TODO: Integrate advanced features with platform layer
// For now, store them in memory for demonstration
return await TaskFlowPlatform.instance.enqueue(
name: name,
input: input,
constraints: constraints?.toMap(),
retry: retry?.toMap(),
priority: priority.name,
tags: tags,
initialDelayMs: initialDelay?.inMilliseconds,
uniqueId: uniqueId,
uniquePolicy: uniquePolicy?.name,
);
}