generateStream method
Stream<ImageGenStreamEvent>
generateStream(
- ImageGenerationRequest request, {
- Future<
void> ? abortTrigger,
Streams image generation as Server-Sent Events (GPT image models only).
Forces stream: true on the request. Yields one or more
ImageGenPartialImageEvents followed by a terminal
ImageGenCompletedEvent carrying the final image and token-based usage.
Example
final stream = client.images.generateStream(
ImageGenerationRequest(
model: ImageModels.gptImage2,
prompt: 'A white cat wearing a top hat',
partialImages: 2,
),
);
await for (final event in stream) {
switch (event) {
case ImageGenPartialImageEvent():
print('partial #${event.partialImageIndex}');
case ImageGenCompletedEvent():
print('done — ${event.usage.totalTokens} tokens');
case ImageGenUnknownEvent():
// Forward-compatibility fallback.
}
}
Implementation
Stream<ImageGenStreamEvent> generateStream(
ImageGenerationRequest request, {
Future<void>? abortTrigger,
}) {
ensureNotClosed?.call();
final body = request.toJson()..['stream'] = true;
return streamSseEvents(
endpoint: _generateEndpoint,
body: body,
abortTrigger: abortTrigger,
).map((json) {
final sseEvent = json['_event'] as String?;
final error = json['error'];
if (sseEvent == 'error' || error != null) {
throwInlineStreamError(json, sseEvent, error);
}
try {
return ImageGenStreamEvent.fromJson(json);
} on FormatException catch (e) {
throw ParseException(
message: 'Failed to parse image generation stream event: $e',
responseBody: json.toString(),
cause: e,
);
} on TypeError catch (e) {
throw ParseException(
message: 'Failed to parse image generation stream event: $e',
responseBody: json.toString(),
cause: e,
);
}
});
}