Queue Plus

coverage

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.