diff --git a/lib/pages/analytics/modules/analytics/views/analytics_page.dart b/lib/pages/analytics/modules/analytics/views/analytics_page.dart index 68a531c8..ca07c389 100644 --- a/lib/pages/analytics/modules/analytics/views/analytics_page.dart +++ b/lib/pages/analytics/modules/analytics/views/analytics_page.dart @@ -1,5 +1,7 @@ +import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_web/pages/analytics/modules/air_quality/blocs/device_location/device_location_bloc.dart'; import 'package:syncrow_web/pages/analytics/modules/air_quality/blocs/range_of_aqi/range_of_aqi_bloc.dart'; import 'package:syncrow_web/pages/analytics/modules/analytics/blocs/analytics_date_picker_bloc/analytics_date_picker_bloc.dart'; import 'package:syncrow_web/pages/analytics/modules/analytics/blocs/analytics_devices/analytics_devices_bloc.dart'; @@ -16,6 +18,7 @@ import 'package:syncrow_web/pages/analytics/modules/occupancy/blocs/occupancy_he import 'package:syncrow_web/pages/analytics/services/analytics_devices/analytics_devices_service_delagate.dart'; import 'package:syncrow_web/pages/analytics/services/analytics_devices/remote_energy_management_analytics_devices_service.dart'; import 'package:syncrow_web/pages/analytics/services/analytics_devices/remote_occupancy_analytics_devices_service.dart'; +import 'package:syncrow_web/pages/analytics/services/device_location/remote_device_location_service.dart'; import 'package:syncrow_web/pages/analytics/services/energy_consumption_by_phases/remote_energy_consumption_by_phases_service.dart'; import 'package:syncrow_web/pages/analytics/services/energy_consumption_per_device/remote_energy_consumption_per_device_service.dart'; import 'package:syncrow_web/pages/analytics/services/occupacy/remote_occupancy_service.dart'; @@ -101,6 +104,13 @@ class _AnalyticsPageState extends State { FakeRangeOfAqiService(), ), ), + BlocProvider( + create: (context) => DeviceLocationBloc( + RemoteDeviceLocationService( + Dio(BaseOptions(baseUrl: 'https://api.openweathermap.org/data/2.5')), + ), + ), + ), ], child: const AnalyticsPageForm(), ); diff --git a/lib/pages/analytics/services/device_location/remote_device_location_service.dart b/lib/pages/analytics/services/device_location/remote_device_location_service.dart index b78be6cc..707d6c61 100644 --- a/lib/pages/analytics/services/device_location/remote_device_location_service.dart +++ b/lib/pages/analytics/services/device_location/remote_device_location_service.dart @@ -9,6 +9,7 @@ class RemoteDeviceLocationService implements DeviceLocationService { final Dio _dio; static final _openWeatherApiKey = dotenv.env['OPEN_WEATHER_API_KEY']!; + @override Future get(GetDeviceLocationDataParam param) async { try { @@ -31,8 +32,12 @@ class RemoteDeviceLocationService implements DeviceLocationService { } Future _getAirQualityData(GetDeviceLocationDataParam param) async { - final response = await _dio.get( - 'https://api.openweathermap.org/data/2.5/air_pollution', + final response = await _dio.get>( + '/air_pollution/history', + options: Options( + method: 'GET', + responseType: ResponseType.json, + ), queryParameters: { 'lat': param.latitude, 'lon': param.longitude, @@ -40,7 +45,7 @@ class RemoteDeviceLocationService implements DeviceLocationService { }, ); - final data = response.data as Map; + final data = response.data ?? {}; final list = data['list'] as List; if (list.isEmpty) return null; @@ -53,8 +58,12 @@ class RemoteDeviceLocationService implements DeviceLocationService { final start = DateTime(now.year, now.month, now.day); final end = DateTime(now.year, now.month, now.day, 23, 59, 59); try { - final response = await _dio.get( - 'https://api.openweathermap.org/data/2.5/weather', + final response = await _dio.get>( + '/weather', + options: Options( + method: 'GET', + responseType: ResponseType.json, + ), queryParameters: { 'lat': param.latitude, 'lon': param.longitude,