nc-photos/lib/list_extension.dart
2022-01-06 18:55:46 +08:00

23 lines
571 B
Dart

import 'dart:math' as math;
extension ListExtension<T> on List<T> {
Iterable<T> takeIndex(List<int> indexes) => indexes.map((e) => this[e]);
List<T> slice(int start, [int? stop]) {
if (start < 0) {
start = math.max(length + start, 0);
}
if (stop != null && stop < 0) {
stop = math.max(length + stop, 0);
}
if (start >= length) {
return [];
} else if (stop == null) {
return sublist(start);
} else if (start >= stop) {
return [];
} else {
return sublist(start, math.min(stop, length));
}
}
}