* opt: _onTapUp

* opt: set contains

* opt: elementAtOrNull
This commit is contained in:
My-Responsitories
2026-02-02 20:12:12 +08:00
committed by GitHub
parent 37fa165f59
commit 7260a387f9
12 changed files with 46 additions and 36 deletions

View File

@@ -24,13 +24,6 @@ extension IterableExt<T> on Iterable<T> {
}
extension ListExt<T> on List<T> {
T? getOrNull(int index) {
if (index < 0 || index >= length) {
return null;
}
return this[index];
}
bool removeFirstWhere(bool Function(T) test) {
final index = indexWhere(test);
if (index != -1) {
@@ -50,4 +43,27 @@ extension ListExt<T> on List<T> {
) {
return where(test).reduceOrNull(combine) ?? reduce(combine);
}
/// from [algorithms.lowerBoundBy].
int lowerBoundByKey<K extends Comparable<K>>(
K Function(T element) keyOf,
K key, [
int start = 0,
int? end,
]) {
end = RangeError.checkValidRange(start, end, length);
var min = start;
var max = end;
while (min < max) {
var mid = min + ((max - min) >> 1);
var element = this[mid];
var comp = keyOf(element).compareTo(key);
if (comp < 0) {
min = mid + 1;
} else {
max = mid;
}
}
return min;
}
}