import 'dart:typed_data'; import 'package:collection/collection.dart'; extension ListExtension on List { List uniqueConsecutive({ int Function(E a, E b)? compare, void Function(E a, E b)? onDuplicate, }) { compare ??= (E a, E b) => a == b ? 0 : 1; int i = 1, j = 1; for (; i < length; i++) { if (compare(this[i - 1], this[i]) != 0) { if (i != j) { this[j] = this[i]; } j++; } else if (onDuplicate != null) { onDuplicate(this[i - 1], this[i]); } } length = length == 0 ? 0 : j; return this; } ListSlice nestedSlice(int start, int end) { if (this is ListSlice) { final ListSlice self = this as ListSlice; return ListSlice(self.source, self.start + start, self.start + end); } return ListSlice(this, start, end); } } extension IntListExtension on Iterable { Int64List toInt64List() { final list = Int64List(length); list.setAll(0, this); return list; } }