DayTimings.fromJson constructor

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

Creates a new DayTimings object from JSON data.

Implementation

factory DayTimings.fromJson(Map<String, dynamic> json) {
  final String timeStr = json[ApiFields.openingTime] ?? '';

  late final Time time;

  if (timeStr.isEmpty) {
    time = emptyTime;
  } else {
    if (!RegExp(r'\d{2}:\d{2}').hasMatch(timeStr)) {
      time = emptyTime;
    } else {
      final String hourStr = timeStr.substring(0, 2);
      final String minuteStr = timeStr.substring(3);

      final int hour = int.parse(hourStr);
      final int minute = int.parse(minuteStr);

      time = Time(hour, minute);
    }
  }

  return DayTimings(
    openingTime: time,
    firstTrains: ((json[ApiFields.firstTrains] as List?) ?? [])
        .map((stop) => TerminusTrain.fromJson(stop))
        .toList(),
    lastTrains: ((json[ApiFields.lastTrains] as List?) ?? [])
        .map((stop) => TerminusTrain.fromJson(stop))
        .toList(),
  );
}