From 79ff9e29e763bbc518cec801369955672f8640e1 Mon Sep 17 00:00:00 2001 From: theilen <dominik.theilen@gmx.de> Date: Thu, 30 Mar 2023 18:38:25 +0200 Subject: [PATCH] Include day and weather information --- lib/main.dart | 56 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 9aad9b7..1805cb4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:intl/intl.dart'; +import 'package:tuple/tuple.dart'; import 'widgets/returnOrigin.dart'; import 'widgets/returnDestination.dart'; import 'package:geocoding/geocoding.dart'; @@ -212,28 +213,19 @@ class _MyHomePageState extends State<MyHomePage> { var originlon = _originCoordinates.longitude; var destlat = _destCoordinates.latitude; var destlon = _destCoordinates.longitude; + var dateTup = getDayOffset(); // Get direction data // No weather or days included for now - final response = await http.post( - Uri.parse('http://10.0.2.2:8080/route'), - body: jsonEncode( - { - "start_node": { - "lat": originlat, - "lon": originlon - }, - "end_node": { - "lat": destlat, - "lon": destlon - }, - "forbidden": [], - "start_after_today": 0, - "end_after_today": 0 - } - ), - headers: <String, String>{"Content-Type": "application/json"} - ); + final response = await http.post(Uri.parse('http://10.0.2.2:8080/route'), + body: jsonEncode({ + "start_node": {"lat": originlat, "lon": originlon}, + "end_node": {"lat": destlat, "lon": destlon}, + "forbidden": getForbidden(), + "start_after_today": dateTup.item1, + "end_after_today": dateTup.item2 + }), + headers: <String, String>{"Content-Type": "application/json"}); _data = jsonDecode(response.body); var coordinates = _data['route']; int duration = _data['duration']; @@ -293,6 +285,32 @@ class _MyHomePageState extends State<MyHomePage> { return '$distanceInKm km'; } + List<String> getForbidden() { + List<String> forbidden = []; + for (var option in _selectedOptions) { + switch (option) { + case 'Rain': + forbidden.add('rain'); + break; + case 'Frost': + forbidden.add('ice'); + break; + case 'Wind': + forbidden.add('wind'); + break; + case 'Snow': + forbidden.add('snow'); + } + } + + return forbidden; + } + + Tuple2<int, int> getDayOffset() { + return Tuple2<int, int>(_dateRange.start.difference(DateTime.now()).inDays, + _dateRange.end.difference(DateTime.now()).inDays); + } + // Get coords between origin/dest points corresponding to shortest path and update _info. // This part is going to be updated to take directions from backend instead of Direction API. // Future<Directions> _getDirections() async { -- GitLab