Tuple.fromJson constructor

Tuple.fromJson(
  1. Map<String, dynamic> map, {
  2. int? forceLength,
})

Creates a tuple from a map/JSON source.

The type of tuple created is based on the existance of keys in the map object. Because of this, if the map was generated from a JSON string where null values were omitted, the resulting tuple might not be the desired length. In these cases, you can use forceLength to force a particular length tuple to be returned.

Implementation

factory Tuple.fromJson(Map<String, dynamic> map, {int? forceLength}) {
  if (forceLength != null) {
    assert(forceLength >= 0 && forceLength <= 9,
        'The value of forceLength must be between 0 and 9');

    switch (forceLength) {
      case 0:
        return Tuple0.fromJson(map);
      case 1:
        return Tuple1<dynamic>.fromJson(map);
      case 2:
        return Tuple2<dynamic, dynamic>.fromJson(map);
      case 3:
        return Tuple3<dynamic, dynamic, dynamic>.fromJson(map);
      case 4:
        return Tuple4<dynamic, dynamic, dynamic, dynamic>.fromJson(map);
      case 5:
        return Tuple5<dynamic, dynamic, dynamic, dynamic, dynamic>.fromJson(
            map);
      case 6:
        return Tuple6<dynamic, dynamic, dynamic, dynamic, dynamic,
            dynamic>.fromJson(map);
      case 7:
        return Tuple7<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic,
            dynamic>.fromJson(map);
      case 8:
        return Tuple8<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic,
            dynamic, dynamic>.fromJson(map);
      case 9:
        return Tuple9<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic,
            dynamic, dynamic, dynamic>.fromJson(map);
    }
  }
  if (map.containsKey('item8')) {
    return Tuple9<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic,
        dynamic, dynamic, dynamic>.fromJson(map);
  }
  if (map.containsKey('item7')) {
    return Tuple8<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic,
        dynamic, dynamic>.fromJson(map);
  }
  if (map.containsKey('item6')) {
    return Tuple7<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic,
        dynamic>.fromJson(map);
  }
  if (map.containsKey('item5')) {
    return Tuple6<dynamic, dynamic, dynamic, dynamic, dynamic,
        dynamic>.fromJson(map);
  }
  if (map.containsKey('item4')) {
    return Tuple5<dynamic, dynamic, dynamic, dynamic, dynamic>.fromJson(map);
  }
  if (map.containsKey('item3')) {
    return Tuple4<dynamic, dynamic, dynamic, dynamic>.fromJson(map);
  }
  if (map.containsKey('item2')) {
    return Tuple3<dynamic, dynamic, dynamic>.fromJson(map);
  }
  if (map.containsKey('item1')) return Tuple2<dynamic, dynamic>.fromJson(map);
  if (map.containsKey('item')) return Tuple1<dynamic>.fromJson(map);
  return Tuple0.fromJson(map);
}