getData static method

List<WeatherMsgData> getData(
  1. Map data
)

Implementation

static List<WeatherMsgData> getData(Map data) {
  if (data['data'] is List) {
    return List.from(data['data'])
        .whereType<Map>()
        .map((item) => WeatherMsgData.from(item))
        .toList();
  }

  List<WeatherMsgData> dataList = [];
  List<String> dates = _splitField(data["date"]);
  List<String> codes = _splitField(data["weatherCode"]);
  List<String> maxs = _splitField(data["max"]);
  List<String> mins = _splitField(data["min"]);
  final length = [dates.length, codes.length, maxs.length, mins.length]
      .where((item) => item > 0)
      .fold<int>(
          0,
          (prev, item) => prev == 0
              ? item
              : prev < item
                  ? prev
                  : item);
  for (int i = 0; i < length; i++) {
    dataList.add(WeatherMsgData(
      date: i < dates.length ? dates[i] : '',
      code: i < codes.length ? codes[i] : '',
      max: i < maxs.length ? WeatherMsgData._toDouble(maxs[i]) : 0,
      min: i < mins.length ? WeatherMsgData._toDouble(mins[i]) : 0,
    ));
  }
  return dataList;
}