writeStreamingOutput method
Generate streaming output for large generated content
Implementation
Future<void> writeStreamingOutput(
BuildStep buildStep,
AssetId outputId,
Stream<String> contentStream, {
int bufferSize = defaultChunkSize,
}) async {
final buffer = StringBuffer();
var bufferLength = 0;
await for (final chunk in contentStream) {
buffer.write(chunk);
bufferLength += chunk.length;
// Flush buffer when it reaches the buffer size
if (bufferLength >= bufferSize) {
await buildStep.writeAsString(outputId, buffer.toString());
// Update memory tracking before resetting bufferLength
_updateMemoryUsage(-bufferLength);
buffer.clear();
bufferLength = 0;
}
}
// Write remaining content
if (bufferLength > 0) {
await buildStep.writeAsString(outputId, buffer.toString());
}
}