generateImageStream method

Stream<DiffusionStreamEvent> generateImageStream(
  1. DiffusionGenerationOptions options
)

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,
  );
}