ReaderTTSVoice.fromJson constructor

ReaderTTSVoice.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory ReaderTTSVoice.fromJson(final Map<String, dynamic> json) {
  final jsonObject = Map<String, dynamic>.of(json);

  final identifier = jsonObject.optString('identifier', remove: true);
  final name = jsonObject.optNullableString('name', remove: true) ?? identifier;
  final language = jsonObject.optString('language', remove: true);
  final networkRequired = jsonObject.optBoolean('networkRequired', remove: true);
  final active = jsonObject.optNullableBoolean('active', remove: true);

  final gender = TTSVoiceGender.fromString(jsonObject.optString('gender', remove: true));

  final qualityStr = jsonObject.optNullableString('quality', remove: true);
  TTSVoiceQuality? quality;

  if (qualityStr != null) {
    try {
      quality = TTSVoiceQuality.optFromString(qualityStr);
      if (quality == null) {
        ReadiumLog.w('Unknown TTSVoiceQuality value: $qualityStr, defaulting to null.');
      }
      // ignore: avoid_catches_without_on_clauses
    } catch (e) {
      ReadiumLog.w('Unknown TTSVoiceQuality value: $qualityStr, defaulting to null.');
      quality = null;
    }
  }

  return ReaderTTSVoice(
    identifier: identifier,
    name: name,
    language: language,
    networkRequired: networkRequired,
    gender: gender,
    quality: quality,
    active: active,
  );
}