native_workmanager_gen library
Code generator for native_workmanager.
Reads @WorkerCallback annotations and generates:
- A
WorkerIdsabstract final class withstatic const Stringfields (one per annotated function). - A
generatedWorkerRegistrymap for use withNativeWorkManager.initialize(dartWorkers: ...).
Setup
Add to pubspec.yaml:
dev_dependencies:
native_workmanager_gen: ^1.0.4
build_runner: ^2.4.0
Usage
// lib/workers.dart
import 'package:native_workmanager/native_workmanager.dart';
part 'workers.g.dart';
@WorkerCallback('sync_contacts')
Future<bool> syncContacts(Map<String, dynamic>? input) async {
// your logic
return true;
}
@WorkerCallback('backup_photos')
Future<bool> backupPhotos(Map<String, dynamic>? input) async {
// your logic
return true;
}
Run:
dart run build_runner build --delete-conflicting-outputs
This produces lib/workers.g.dart:
abstract final class WorkerIds {
static const String syncContacts = 'sync_contacts';
static const String backupPhotos = 'backup_photos';
}
final Map<String, DartWorkerCallback> generatedWorkerRegistry = {
'sync_contacts': syncContacts,
'backup_photos': backupPhotos,
};
Initialize with the registry:
await NativeWorkManager.initialize(
dartWorkers: generatedWorkerRegistry,
);
Schedule with a type-safe ID:
await NativeWorkManager.enqueue(
taskId: 'task-001',
trigger: TaskTrigger.oneTime(),
worker: DartWorker(callbackId: WorkerIds.syncContacts),
);
Classes
- WorkerCallbackGenerator
-
Generates type-safe worker IDs and a registry map from
@WorkerCallbackannotations.