firstWhere method

(Entity, A, B, C, D)? firstWhere(
  1. Query4UntilCallback<A, B, C, D> predicate
)

Implementation

(Entity, A, B, C, D)? firstWhere(Query4UntilCallback<A, B, C, D> predicate) {
  final driver = Query.chooseDriver(_driverCandidates);
  final driverIsA = identical(driver, _a);
  final driverIsB = identical(driver, _b);
  final driverIsC = identical(driver, _c);
  final driverIsD = identical(driver, _d);
  _world.beginQuery(this);
  try {
    for (var i = 0; i < driver.length; i++) {
      final entityIndex = driver.entityIndexAt(i);
      final aDense = driverIsA ? i : _a.denseIndexOf(entityIndex);
      if (aDense < 0) continue;
      final bDense = driverIsB ? i : _b.denseIndexOf(entityIndex);
      if (bDense < 0) continue;
      final cDense = driverIsC ? i : _c.denseIndexOf(entityIndex);
      if (cDense < 0) continue;
      final dDense = driverIsD ? i : _d.denseIndexOf(entityIndex);
      if (dDense < 0) continue;
      if (!Query.passesFilters(entityIndex, _withStores, _withoutStores)) {
        continue;
      }
      final entity = _world.entities.resolve(entityIndex);
      final a = _a.valueAt(aDense);
      final b = _b.valueAt(bDense);
      final c = _c.valueAt(cDense);
      final d = _d.valueAt(dDense);
      if (predicate(entity, a, b, c, d)) return (entity, a, b, c, d);
    }
    return null;
  } finally {
    _world.endQuery();
  }
}