streamRawResourceUntil method
Stream<MapRecord>
streamRawResourceUntil(
- Completer<
void> cancellationSignal, [ - LoadCriterion? criteria
Implementation
Stream<MapRecord> streamRawResourceUntil(
Completer<void> cancellationSignal, [
LoadCriterion? criteria,
]) async* {
if (data != null) {
BaseCSVFile finalData = data!;
if (criteria != null) {
finalData = finalData.filterThroughCriteria(criteria);
}
yield* Stream.fromIterable(finalData.toList(growable: false));
return;
}
final stream = streamRecordsThroughFile(
resourceFile,
fieldDefinitions,
criteria,
cancellationSignal: cancellationSignal,
).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);
await for (final e in stream.transform(
ListRecordToMapRecordTransformer(header),
)) {
if (cancellationSignal.isCompleted) return;
yield e;
}
}