AvailablePreferenceImportances.loadFromJSONString constructor

AvailablePreferenceImportances.loadFromJSONString(
  1. String preferenceImportancesString
)

Load constructor; may throw an exception.

Implementation

AvailablePreferenceImportances.loadFromJSONString(
  final String preferenceImportancesString,
) {
  final List<String> importanceIds = <String>[];
  final Map<String, PreferenceImportance> preferenceImportances =
      <String, PreferenceImportance>{};
  final Map<String, int> importancesReverseIds = <String, int>{};
  final dynamic inputJson =
      HttpHelper().jsonDecode(preferenceImportancesString);
  for (final dynamic item in inputJson as List<dynamic>) {
    final PreferenceImportance preferenceImportance =
        PreferenceImportance.fromJson(item);
    final String? id = preferenceImportance.id;
    if (id != null) {
      preferenceImportances[id] = preferenceImportance;
      importanceIds.add(id);
      importancesReverseIds[id] = importanceIds.length - 1;
    }
  }
  if (importanceIds.isEmpty) {
    throw Exception(
        'Unexpected error: empty preference importance list from json string $preferenceImportancesString');
  }
  int i = 0;
  for (final String preferenceImportanceId in importanceIds) {
    importancesReverseIds[preferenceImportanceId] = i++;
  }
  _importanceIds = importanceIds;
  _preferenceImportances = preferenceImportances;
  _importancesReverseIds = importancesReverseIds;
}