when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult audioInput(
    1. String data,
    2. String? customSessionId
    ),
  2. required TResult sessionSettings(
    1. AudioSettings? audio,
    2. List<BuiltinTool>? builtinTools,
    3. ContextSettings? context,
    4. String? customSessionId,
    5. String? languageModelApiKey,
    6. Map<String, dynamic>? metadata,
    7. String? systemPrompt,
    8. List<UserDefinedTool>? tools,
    9. Map<String, dynamic>? variables,
    10. String? voiceId,
    ),
  3. required TResult userInput(
    1. String data,
    2. String? customSessionId
    ),
  4. required TResult assistantInput(
    1. String data,
    2. String? customSessionId
    ),
  5. required TResult toolResponse(
    1. String content,
    2. String toolCallId,
    3. String? customSessionId,
    4. String? toolName,
    5. String? toolType,
    ),
  6. required TResult toolError(
    1. String error,
    2. String toolCallId,
    3. String? code,
    4. String? content,
    5. String? customSessionId,
    6. String? level,
    7. String? toolType,
    ),
  7. required TResult pauseAssistantMessage(
    1. String? customSessionId
    ),
  8. required TResult resumeAssistantMessage(
    1. String? customSessionId
    ),
})

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case Subclass2(:final field2):
    return ...;
}

Implementation

@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function( String data,  String? customSessionId)  audioInput,required TResult Function( AudioSettings? audio,  List<BuiltinTool>? builtinTools,  ContextSettings? context,  String? customSessionId,  String? languageModelApiKey,  Map<String, dynamic>? metadata,  String? systemPrompt,  List<UserDefinedTool>? tools,  Map<String, dynamic>? variables,  String? voiceId)  sessionSettings,required TResult Function( String text,  String? customSessionId)  userInput,required TResult Function( String text,  String? customSessionId)  assistantInput,required TResult Function( String content,  String toolCallId,  String? customSessionId,  String? toolName,  String? toolType)  toolResponse,required TResult Function( String error,  String toolCallId,  String? code,  String? content,  String? customSessionId,  String? level,  String? toolType)  toolError,required TResult Function( String? customSessionId)  pauseAssistantMessage,required TResult Function( String? customSessionId)  resumeAssistantMessage,}) {final _that = this;
switch (_that) {
case AudioInput():
return audioInput(_that.data,_that.customSessionId);case SessionSettings():
return sessionSettings(_that.audio,_that.builtinTools,_that.context,_that.customSessionId,_that.languageModelApiKey,_that.metadata,_that.systemPrompt,_that.tools,_that.variables,_that.voiceId);case UserInput():
return userInput(_that.text,_that.customSessionId);case AssistantInput():
return assistantInput(_that.text,_that.customSessionId);case ToolResponseMessage():
return toolResponse(_that.content,_that.toolCallId,_that.customSessionId,_that.toolName,_that.toolType);case ToolErrorMessage():
return toolError(_that.error,_that.toolCallId,_that.code,_that.content,_that.customSessionId,_that.level,_that.toolType);case PauseAssistantMessage():
return pauseAssistantMessage(_that.customSessionId);case ResumeAssistantMessage():
return resumeAssistantMessage(_that.customSessionId);}
}