references property

You can change the Firestore reference.

By specifying multiple items in the array, it is possible to issue and read queries simultaneously.

Implementation

@override
@protected
@mustCallSuper
List<Query<DynamicMap>> get references {
  if (parameters.containsKey("key")) {
    if (parameters.containsKey("containsAny")) {
      final items = parameters["containsAny"]?.split(",") ?? <String>[];
      if (items.isNotEmpty) {
        final queries = <Query<DynamicMap>>[];
        for (var i = 0; i < items.length; i += 10) {
          queries.add(
            query(
              firestore.collection(path.split("?").first),
            ).where(
              parameters["key"]!,
              arrayContainsAny: items
                  .sublist(
                    i,
                    min(i + 10, items.length),
                  )
                  .map((e) => FirestoreUtility._parse(e))
                  .toList(),
            ),
          );
        }
        return queries;
      }
    } else if (parameters.containsKey("whereIn")) {
      final items = parameters["whereIn"]?.split(",") ?? <String>[];
      if (items.isNotEmpty) {
        final queries = <Query<DynamicMap>>[];
        for (var i = 0; i < items.length; i += 10) {
          queries.add(
            query(
              firestore.collection(path.split("?").first),
            ).where(
              parameters["key"]!,
              whereIn: items
                  .sublist(
                    i,
                    min(i + 10, items.length),
                  )
                  .map((e) => FirestoreUtility._parse(e))
                  .toList(),
            ),
          );
        }
        return queries;
      }
    } else if (parameters.containsKey("whereNotIn")) {
      final items = parameters["whereNotIn"]?.split(",") ?? <String>[];
      if (items.isNotEmpty) {
        final queries = <Query<DynamicMap>>[];
        for (var i = 0; i < items.length; i += 10) {
          queries.add(
            query(
              firestore.collection(path.split("?").first),
            ).where(
              parameters["key"]!,
              whereIn: items
                  .sublist(
                    i,
                    min(i + 10, items.length),
                  )
                  .map((e) => FirestoreUtility._parse(e))
                  .toList(),
            ),
          );
        }
        return queries;
      }
    } else if (parameters.containsKey("geoHash")) {
      final items = parameters["geoHash"]?.split(",") ?? <String>[];
      if (items.isNotEmpty) {
        final queries = <Query<DynamicMap>>[];
        for (var i = 0; i < items.length; i++) {
          final hash = items[i];
          queries.add(
            query(
              firestore.collection(path.split("?").first),
            )
                .orderBy(parameters["key"]!)
                .startAt([hash]).endAt([hash + '\uf8ff']),
          );
        }
        return queries;
      }
    }
  }
  return super.references;
}