merge static method

StreamRequest merge(
  1. Iterable<StreamRequest> requests, {
  2. bool reportFiltered = false,
})

Highest accuracy, shortest interval, smallest distance, loosest filters, and background if any listener asked for it (the first one's notification).

Implementation

static StreamRequest merge(
  Iterable<StreamRequest> requests, {
  bool reportFiltered = false,
}) {
  final list = requests.toList();
  return StreamRequest(
    accuracy: list
        .map((r) => r.accuracy)
        .reduce((a, b) => a.index >= b.index ? a : b),
    interval: list.map((r) => r.interval).reduce((a, b) => a <= b ? a : b),
    distanceFilter: list
        .map((r) => r.distanceFilter)
        .reduce((a, b) => a <= b ? a : b),
    filters: PositionFilters.mostPermissive(list.map((r) => r.filters)),
    reportFiltered: reportFiltered,
    background: list
        .map((r) => r.background)
        .firstWhere((b) => b != null, orElse: () => null),
  );
}