time_overlapping 0.1.0 copy "time_overlapping: ^0.1.0" to clipboard
time_overlapping: ^0.1.0 copied to clipboard

A package for checking the time overlapping in the given DateTime ranges.

time_overlapping #

TimeOverlapping package is a lightweight and blazing fast for checking the time overlapping in the given DateTime ranges.

codecov Dart pub.dev license

Getting Started #

This package accepts only List<OverlapParams>

OverlapParams

This requires an uniqueId, DateTimeRange & dynamic data*.

dynamic data is type dynamic which accepts any sort of data.

It will throw AssertionError if it founds any duplicate Ids.

OverlapParams('uniqueId', DateTimeRange(start, end), {}),

There are 3 type of functions to find overlapping.

  1. findOverlap - returns the List<String> ie.., list of overlapping Ids.
  2. findOverlapWithData - returns the List<OverlapParams> which has DateTimeRange overlap.
  3. hasOverlap - to find timeOverlap for only 2 dateTimeRange. - returns bool.

Usage #

findOverlap #

void main() {
  final range1 = DateTimeRange(
    start: DateTime.now(),
    end: DateTime.now().add(const Duration(hours: 2)),
  );

  final range2 = DateTimeRange(
    start: DateTime.now(),
    end: DateTime.now().add(const Duration(hours: 1)),
  );

  final range3 = DateTimeRange(
    start: DateTime.now().add(const Duration(hours: 2)),
    end: DateTime.now().add(const Duration(hours: 3)),
  );

  final range4 = DateTimeRange(
    start: DateTime.now().add(const Duration(hours: 3)),
    end: DateTime.now().add(const Duration(hours: 4)),
  );

  final overlapParams = [
    OverlapParams('001', range1, {}),
    OverlapParams('002', range2, {}),
    OverlapParams('003', range3, {}),
    OverlapParams('004', range4, {}),
  ];

  print(TimeOverlapFinder.findOverlap(overlapParams));
}
Output
['001', '002']

findOverlapWithData #

void main() {
  final range1 = DateTimeRange(
    start: DateTime.now(),
    end: DateTime.now().add(const Duration(hours: 2)),
  );

  final range2 = DateTimeRange(
    start: DateTime.now(),
    end: DateTime.now().add(const Duration(hours: 1)),
  );

  final range3 = DateTimeRange(
    start: DateTime.now().add(const Duration(hours: 2)),
    end: DateTime.now().add(const Duration(hours: 3)),
  );

  final range4 = DateTimeRange(
    start: DateTime.now().add(const Duration(hours: 3)),
    end: DateTime.now().add(const Duration(hours: 4)),
  );

  final overlapParams = [
    OverlapParams('001', range1, {}),
    OverlapParams('002', range2, {}),
    OverlapParams('003', range3, {}),
    OverlapParams('004', range4, {}),
  ];

  print(TimeOverlapFinder.findOverlapWithData(overlapParams));
}
Output
 [
    OverlapParams(001, 2021-08-12 07:36:07.095 - 2021-08-12 09:36:07.095, {}),
    OverlapParams(002, 2021-08-12 07:36:07.095 - 2021-08-12 08:36:07.095, {})
 ]

hasOverlap #

void main() {
  final range1 = DateTimeRange(
    start: DateTime.now(),
    end: DateTime.now().add(const Duration(hours: 2)),
  );

  final range2 = DateTimeRange(
    start: DateTime.now(),
    end: DateTime.now().add(const Duration(hours: 1)),
  );

  final overlapParams = [
    OverlapParams('001', range1, {}),
    OverlapParams('002', range2, {}),
  ];

  print(TimeOverlapFinder.hasOverlap(range1, range2));
}
Output
true

Some useful extensions

1. range1.isBefore(range2),
2. range1.isAfter(range2),
1. range1.isCrossing(range2),
2. range1.isCrossingStart(range2),
3. range1.isCrossingEnd(range2),

Thanks for using my package 🙏 #

13
likes
140
pub points
71%
popularity

Publisher

unverified uploader

A package for checking the time overlapping in the given DateTime ranges.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

equatable, flutter

More

Packages that depend on time_overlapping