native_workmanager_gen library

Code generator for native_workmanager.

Reads @WorkerCallback annotations and generates:

  • A WorkerIds abstract final class with static const String fields (one per annotated function).
  • A generatedWorkerRegistry map for use with NativeWorkManager.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 @WorkerCallback annotations.