58 lines
1.5 KiB
Dart
58 lines
1.5 KiB
Dart
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<String, dynamic> toJson() {
|
|
return {
|
|
"name": name,
|
|
"alias": alias,
|
|
"aliasSource": aliasSource,
|
|
"sequence": sequence,
|
|
"scheduledTime": scheduledTime,
|
|
};
|
|
}
|
|
|
|
factory ScheduledStop.fromJson(Map<String, dynamic> 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,
|
|
);
|
|
}
|
|
}
|