generateImageStream method
Stream typed diffusion events for an image generation.
Yields STARTED → terminal COMPLETED (carrying the full DiffusionResult)
or ERROR. Intermediate per-step progress is not yet emitted (the native
diffusion stream kickoff in commons is a documented stub); the generated
image itself is genuine. Mirrors Swift
RunAnywhere.generateImageStream(_:).
Implementation
Stream<DiffusionStreamEvent> generateImageStream(
DiffusionGenerationOptions options,
) async* {
_ensureInitialized();
_ensureApplePlatform();
final modelId = await _requireLoadedModelId();
_cancelRequested = false;
yield DiffusionStreamEvent(
kind: DiffusionStreamEventKind.DIFFUSION_STREAM_EVENT_KIND_STARTED,
);
final DiffusionResult result;
try {
result = DartBridgeDiffusion.generateProto(
_toGenerationRequest(options, modelId),
);
} on SDKException catch (e) {
yield DiffusionStreamEvent(
kind: DiffusionStreamEventKind.DIFFUSION_STREAM_EVENT_KIND_ERROR,
errorMessage: e.message,
);
return;
} catch (e) {
yield DiffusionStreamEvent(
kind: DiffusionStreamEventKind.DIFFUSION_STREAM_EVENT_KIND_ERROR,
errorMessage: e.toString(),
);
return;
}
// Honour a cancellation observed at this checkpoint: skip the terminal
// event (the single CoreML generate cannot be interrupted mid-flight).
if (_cancelRequested) {
_cancelRequested = false;
return;
}
yield DiffusionStreamEvent(
kind: DiffusionStreamEventKind.DIFFUSION_STREAM_EVENT_KIND_COMPLETED,
result: result,
);
}