setIosAudioCategory method

Future setIosAudioCategory(
  1. IosTextToSpeechAudioCategory category,
  2. List<IosTextToSpeechAudioCategoryOptions> options, [
  3. IosTextToSpeechAudioMode mode = IosTextToSpeechAudioMode.defaultMode
])

Future which invokes the platform specific method for setting audio category Ios supported only

Implementation

Future<dynamic> setIosAudioCategory(IosTextToSpeechAudioCategory category,
    List<IosTextToSpeechAudioCategoryOptions> options,
    [IosTextToSpeechAudioMode mode =
        IosTextToSpeechAudioMode.defaultMode]) async {
  const categoryToString = <IosTextToSpeechAudioCategory, String>{
    IosTextToSpeechAudioCategory.ambientSolo: iosAudioCategoryAmbientSolo,
    IosTextToSpeechAudioCategory.ambient: iosAudioCategoryAmbient,
    IosTextToSpeechAudioCategory.playback: iosAudioCategoryPlayback
  };
  const optionsToString = {
    IosTextToSpeechAudioCategoryOptions.mixWithOthers:
        'iosAudioCategoryOptionsMixWithOthers',
    IosTextToSpeechAudioCategoryOptions.duckOthers:
        'iosAudioCategoryOptionsDuckOthers',
    IosTextToSpeechAudioCategoryOptions.interruptSpokenAudioAndMixWithOthers:
        'iosAudioCategoryOptionsInterruptSpokenAudioAndMixWithOthers',
    IosTextToSpeechAudioCategoryOptions.allowBluetooth:
        'iosAudioCategoryOptionsAllowBluetooth',
    IosTextToSpeechAudioCategoryOptions.allowBluetoothA2DP:
        'iosAudioCategoryOptionsAllowBluetoothA2DP',
    IosTextToSpeechAudioCategoryOptions.allowAirPlay:
        'iosAudioCategoryOptionsAllowAirPlay',
    IosTextToSpeechAudioCategoryOptions.defaultToSpeaker:
        'iosAudioCategoryOptionsDefaultToSpeaker',
  };
  const modeToString = <IosTextToSpeechAudioMode, String>{
    IosTextToSpeechAudioMode.defaultMode: iosAudioModeDefault,
    IosTextToSpeechAudioMode.gameChat: iosAudioModeGameChat,
    IosTextToSpeechAudioMode.measurement: iosAudioModeMeasurement,
    IosTextToSpeechAudioMode.moviePlayback: iosAudioModeMoviePlayback,
    IosTextToSpeechAudioMode.spokenAudio: iosAudioModeSpokenAudio,
    IosTextToSpeechAudioMode.videoChat: iosAudioModeVideoChat,
    IosTextToSpeechAudioMode.videoRecording: iosAudioModeVideoRecording,
    IosTextToSpeechAudioMode.voiceChat: iosAudioModeVoiceChat,
    IosTextToSpeechAudioMode.voicePrompt: iosAudioModeVoicePrompt,
  };
  if (!Platform.isIOS) return;
  try {
    return await _channel
        .invokeMethod<dynamic>('setIosAudioCategory', <String, dynamic>{
      iosAudioCategoryKey: categoryToString[category],
      iosAudioCategoryOptionsKey:
          options.map((o) => optionsToString[o]).toList(),
      iosAudioModeKey: modeToString[mode],
    });
  } on PlatformException catch (e) {
    print(
        'setIosAudioCategory error, category: $category, mode: $mode, error: ${e.message}');
  }
}