queue_plus 0.1.2 copy "queue_plus: ^0.1.2" to clipboard
queue_plus: ^0.1.2 copied to clipboard

A Very Good Project created by Very Good CLI.

example/lib/example.dart

import 'dart:async';
import 'package:queue_plus/queue_plus.dart';

// in this example there is 2 queues:
// first queue with 1 parrarel processing (by default) and each process take 1 second
// second queue with 3 parallel processing  and each process take differnt time.
// eache queue has a listener to the remaining items count 
// the output will be:
    // Queue 1 Remaining items: 0
    // Queue 2 Remaining items: 0
    // Queue 1 Remaining items: 1
    // Queue 2 Remaining items: 1
    // Queue 1 Remaining items: 2
    // Queue 2 Remaining items: 2
    // Queue 1 Remaining items: 3
    // Queue 2 Remaining items: 3
    // Queue1: 1
    // Queue 1 Remaining items: 2
    // Queue2: 1
    // Queue 2 Remaining items: 2
    // Queue2: 3
    // Queue 2 Remaining items: 1
    // Queue1: 2
    // Queue 1 Remaining items: 1
    // Queue2: 2
    // Queue 2 completed
    // Queue 2 Remaining items: 0
    // Queue 2 Remaining items: 0
    // Queue1: 3
    // Queue 1 completed
    // Exited.

void main() async {
  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();
}
1
likes
150
points
1
downloads

Publisher

unverified uploader

Weekly Downloads

A Very Good Project created by Very Good CLI.

Documentation

API reference

License

MIT (license)

More

Packages that depend on queue_plus