| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A Dart/Flutter package for running heavy or parallelizable tasks in the background using Dart Isolates, with a simple message-based API and worker pool management.
flutter_isolate_worker is a Dart/Flutter package for running heavy or parallelizable tasks in the background using Dart Isolates, with a simple message-based API and convenient worker pool management.
You need to create a class that extends WorkerMessage and override the execute method:
import 'package:flutter_isolate_worker/flutter_isolate_worker.dart';
class FactorialMessage extends WorkerMessage<int, int> {
FactorialMessage(int input) : super(null, input);
@override
Future<int> execute() async {
int result = 1;
for (int i = 1; i <= input; i++) result *= i;
return result;
}
}final pool = IsolateWorkerPool(numIsolates: 2);
await pool.start();final result = await pool.sendMessage(FactorialMessage(5));
print('Result: $result'); // 120Or send to a specific worker:
final result = await pool.sendMessageToTag('worker_1', FactorialMessage(10));pool.pauseWorker('worker_1');
pool.resumeWorker('worker_1');
pool.killByTag('worker_1');
await pool.add(); // Add a new worker
pool.killAll(); // Kill all workerspool.listenWorkerEvents().listen((event) {
print('Worker event: ${event.type} - ${event.message}');
});
pool.events.listen((event) {
print('Pool event: ${event.type} - ${event.tag}');
});import 'package:flutter_isolate_worker/flutter_isolate_worker.dart';
class SumMessage extends WorkerMessage<List<int>, int> {
SumMessage(List<int> input) : super(null, input);
@override
Future<int> execute() async {
return input.fold(0, (a, b) => a + b);
}
}
void main() async {
final pool = IsolateWorkerPool(numIsolates: 2);
await pool.start();
final result = await pool.sendMessage(SumMessage([1, 2, 3, 4, 5]));
print('Sum: $result'); // 15
pool.listenWorkerEvents().listen((event) {
print('Worker event: ${event.type} - ${event.message}');
});
await pool.add(tag: 'custom_worker');
final result2 = await pool.sendMessageToTag('custom_worker', SumMessage([10, 20]));
print('Sum2: $result2'); // 30
pool.killAll();
}If you need a Flutter UI example or more complex tasks (e.g. Fibonacci, large array sorting, API fetching), see the example/ directory in the package.
MIT
| Back | FazBrowse Home | New Git URL |