diff --git a/lib/main.dart b/lib/main.dart index 35743ab..559969a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import 'package:provider/provider.dart'; import 'pages/flood_station_page.dart'; import 'pages/landing_page.dart'; import 'services/flood_station_provider.dart'; +import 'package:timezone/data/latest.dart' as tz; void main() { runApp( @@ -19,6 +20,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { + tz.initializeTimeZones(); return MaterialApp( title: 'Floodwatch', theme: ThemeData( diff --git a/lib/services/api.dart b/lib/services/api.dart index e48ae73..099e040 100644 --- a/lib/services/api.dart +++ b/lib/services/api.dart @@ -1,5 +1,6 @@ import 'package:http/http.dart' as http; import 'dart:convert'; +import 'package:timezone/timezone.dart' as tz; import '../model/flood_station.dart'; import '../model/reading.dart'; @@ -40,9 +41,9 @@ class Api { static Future> fetchReadingsFromStation( String stationId) async { List readings = []; - final dateTime = DateTime.now().subtract(Duration(days: 1)); + final dateTime = _getCurrentUKTime().subtract(Duration(days: 1)).toUtc(); final url = - '$_rootUrl/id/stations/$stationId/readings?since=${dateTime.toIso8601String()}Z&_sorted'; + '$_rootUrl/id/stations/$stationId/readings?since=${dateTime.toIso8601String()}&_sorted'; final response = await http.get(Uri.parse(url)); if (response.statusCode == 200) { final Map jsonStr = jsonDecode(response.body); @@ -52,4 +53,9 @@ class Api { } return readings.reversed.toList(); } + + static DateTime _getCurrentUKTime() { + final london = tz.getLocation('Europe/London'); + return tz.TZDateTime.now(london); + } } diff --git a/pubspec.yaml b/pubspec.yaml index 0f3bbf9..c0f74c1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,6 +15,7 @@ dependencies: http: ^1.3.0 intl: ^0.20.2 provider: ^6.1.2 + timezone: ^0.10.0 dev_dependencies: flutter_test: