listRawResource method

Future<BaseCSVFile> listRawResource({
  1. LoadCriterion? criteria,
  2. bool doValidationChecks = false,
  3. GtfsDataset? dataset,
})

Implementation

Future<BaseCSVFile> listRawResource({
  LoadCriterion? criteria,
  bool doValidationChecks = false,
  GtfsDataset? dataset,
}) async {
  if (data != null) {
    if (criteria == null) {
      return data!;
    }

    return data!.filterThroughCriteria(criteria);
  }

  final stream = streamRecordsThroughFile(
    resourceFile,
    fieldDefinitions,
    criteria,
    doValidationChecks: doValidationChecks,
    dataset: dataset,
  ).asBroadcastStream();

  final rawHeader = await stream.first;

  final header = rawHeader
      .map(
        (e) => fieldDefinitions.firstWhere(
          (element) => element.name == e,
          orElse: () => FieldDefinition<Object>(
            e ?? 'unnamed_field',
            (dataset, header, records) => null,
            type: TextFieldType(),
          ),
        ),
      )
      .toList(growable: false);

  return ListCSVFile(header: header, records: await stream.toList());
}