From aa47b9d85ffac1e99128014e8accb63c54618497 Mon Sep 17 00:00:00 2001 From: fbachus Date: Sun, 31 May 2026 18:25:29 +0200 Subject: [PATCH] feat(json import): add fromJson to missing classes and connect them --- lib/transport_helper.dart | 57 +++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/lib/transport_helper.dart b/lib/transport_helper.dart index b87ff18..18caec2 100644 --- a/lib/transport_helper.dart +++ b/lib/transport_helper.dart @@ -1,3 +1,46 @@ +class Route { + List segments = List.empty(); + Duration duration = Duration(minutes: 0); + + Route({ + required this.segments, + required this.duration, + }); + + // from trip API request + + factory Route.fromJson(Map json) => Route( + segments: json["Leglist"]["Leg"].map((leg) => Segment.fromJson(leg)), + duration: json["LegList"]["Leg"][-1]["Origin"]["time"] - + json["LegList"]["Leg"][0]["Origin"]["time"], + ); + +} + +class Segment { + final Station startPoint; + final Station endPoint; + final DateTime startTime; + final DateTime endTime; + final Vehicle vehicle; + + Segment({ + required this.startPoint, + required this.endPoint, + required this.startTime, + required this.endTime, + required this.vehicle, + }); + + factory Segment.fromJson(Map json) => Segment( + startPoint: Station.fromJson(json["Origin"]), + endPoint: Station.fromJson(json["Destination"]), + startTime: json["Origin"]["rtTime"], + endTime: json["Destination"]["rtTime"], + vehicle: Vehicle.fromJson(json["Product"]), + ); +} + class Station { final String id; final String name; @@ -22,16 +65,19 @@ class Station { class Vehicle { final String id; - final String name; - final List? departures; + final Line line; Vehicle({ required this.id, - required this.name, - required this.departures + required this.line, }); - factory Vehicle.fromJson(Map json) + // we can use the "product" class from within any JSON response + // (within hafas API, on the appropriate level) + factory Vehicle.fromJson(Map json) => Vehicle( + id: json["matchId"], + line: Line.fromJson(json), + ); } class Line { @@ -51,6 +97,7 @@ class Line { this.bgColor, }); + // TODO: EXPLAIN!!!!!!!!!!!! static const _vehicleTypeAsCatCode = [ VehicleType.metro, VehicleType.subway,