Queue Plus
Why ??
I needed a package to handle advanced ble device sending queue processing icluding:
✅ basic queueing functinoality (add, remove, clear, etc)
✅ queueing with delay & timeout
✅ queueing with priority
⭕️ queueing with retry strategy
Installation
Install via dart pub add:
dart pub add queue_plus
Example
QueuePlus<void> queue = QueuePlus(onComplete: () async => print('Queue 1 completed'));
var queue1itemsListener = queue.remainingItems.listen((count) {
print('Queue 1 Remaining items: $count');
});
queue.add(QueueItem(task: () async => Future.delayed(Duration(seconds: 1), () => print('Queue1: 1'))));
queue.add(QueueItem(task: () async => Future.delayed(Duration(seconds: 1), () => print('Queue1: 2'))));
queue.add(QueueItem(task: () async => Future.delayed(Duration(seconds: 1), () => print('Queue1: 3'))));
// second queue with 3 parallel process and each process take differnt time
//
// output:
// Queue3: 1
// Queue2: 3
// Queue2: 2
// Queue 2 completed
QueuePlus<void> queue2 = QueuePlus(parallel: 3, onComplete: () async => print('Queue 2 completed'));
var queue2itemsListener = queue2.remainingItems.listen((count) {
print('Queue 2 Remaining items: $count');
});
queue2.add(QueueItem(task: () async => Future.delayed(Duration(seconds: 1), () => print('Queue2: 1'))));
queue2.add(QueueItem(task: () async => Future.delayed(Duration(seconds: 3), () => print('Queue2: 2'))));
queue2.add(QueueItem(task: () async => Future.delayed(Duration(seconds: 1), () => print('Queue2: 3'))));
await queue.finished;
await queue2.finished;
queue1itemsListener.cancel();
queue2itemsListener.cancel();
queue.dispose();
Libraries
- queue_plus
- A Very Good Project created by Very Good CLI.