sendMessageStream method

  1. @override
Stream<Map<String, dynamic>> sendMessageStream(
  1. String conversationId,
  2. List<Map<String, dynamic>> contents,
  3. Map<String, Object>? extraContext
)
override

Send a message and stream back partial responses as they're generated.

Implementation

@override
Stream<Map<String, dynamic>> sendMessageStream(
  String conversationId,
  List<Map<String, dynamic>> contents,
  Map<String, Object>? extraContext,
) {
  // First, tell native side to start streaming
  _methodChannel.invokeMethod('startMessageStream', {
    'conversationId': conversationId,
    'contents': contents,
    if (extraContext != null) 'extraContext': extraContext,
  });

  return _eventChannel.receiveBroadcastStream({
    'conversationId': conversationId,
  }).map((event) {
    if (event is Map) {
      return Map<String, dynamic>.from(event);
    }
    if (event is String) {
      return Map<String, dynamic>.from(jsonDecode(event) as Map);
    }
    return <String, dynamic>{'text': event.toString()};
  });
}