fromJson static method

Answer fromJson(
  1. Map<String, dynamic> data
)

Implementation

static Answer fromJson(Map<String, dynamic> data) {
  final dynamic value = data[keyResponse];
  final String? responseType = data[keyResponseType] as String?;

  if (responseType == 'DateTime') {
    return Answer<DateTime>(
      data['question'] as String,
      DateTime.parse(data['timestamp'] as String),
    )..response = DateTime.parse(value as String);
  }

  switch (value) {
    case bool():
      return Answer<bool>.parseJson(data);
    case num():
      return Answer<num>.parseJson(data);
    case String():
      return Answer<String>.parseJson(data);
    default:
      // todo Why does value has a type of List<dynamic> instead of List<String>?
      if (value is List) {
        data[keyResponse] = value.map((e) => e.toString()).toList();
        return Answer<List<String>>.parseJson(data);
      } else {
        throw ArgumentError('Unknown answer type: ${value.runtimeType}');
      }
  }
}