import "package:bus_running_record/models/operations/stop.dart"; class ScheduledStop extends Stop { const ScheduledStop({ required super.name, required this.sequence, this.scheduledTime, super.alias, super.aliasSource, }); final int sequence; final String? scheduledTime; ScheduledStop copyWith({ String? name, String? alias, String? aliasSource, int? sequence, String? scheduledTime, }) { return ScheduledStop( name: name ?? this.name, alias: alias ?? this.alias, aliasSource: aliasSource ?? this.aliasSource, sequence: sequence ?? this.sequence, scheduledTime: scheduledTime ?? this.scheduledTime, ); } Map toJson() { return { "name": name, "alias": alias, "aliasSource": aliasSource, "sequence": sequence, "scheduledTime": scheduledTime, }; } factory ScheduledStop.fromJson(Map json) { final raw = (json["scheduledTime"] ?? "").toString().trim(); return ScheduledStop( name: (json["name"] ?? "").toString(), alias: (json["alias"] ?? "").toString().trim().isEmpty ? null : (json["alias"] ?? "").toString(), aliasSource: (json["aliasSource"] ?? json["source"] ?? "") .toString() .trim() .isEmpty ? null : (json["aliasSource"] ?? json["source"] ?? "").toString(), sequence: (json["sequence"] as num?)?.toInt() ?? 0, scheduledTime: raw.isEmpty ? null : raw, ); } }