淘先锋技术网

首页 1 2 3 4 5 6 7

Dart 提供了一个方法 indexWhere 用来获取第一个匹配元素的 index:

但在实际开发中这个方法用起来并不是那么顺手,原因就在它的文档描述中:

当无匹配元素时,返回 -1

说实话,挺蛋疼的,返回 null 多好啊!!!

既然官方不提供,那就自己写一个 Listextension

extension ListExtension<E> on List<E> {
  /// 获取数组中第一个匹配元素的index,没有就返回null
  int? indexWhereOrNull(bool Function(E element) test) {
    for (int i = 0; i < length; i++) {
      if (test(this[i])) return i;
    }
    return null;
  }
}

使用:

final list = [1, 2, 3];
final index = list.indexWhereOrNull((element) => element == 4);
print(index); // null

舒服多了。