Injected DeviceLocationBloc into AnalyticsPage.

This commit is contained in:
Faris Armoush
2025-06-01 10:50:51 +03:00
parent 4ebe65f820
commit 2c4da63266
2 changed files with 24 additions and 5 deletions

View File

@ -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<AnalyticsPage> {
FakeRangeOfAqiService(),
),
),
BlocProvider(
create: (context) => DeviceLocationBloc(
RemoteDeviceLocationService(
Dio(BaseOptions(baseUrl: 'https://api.openweathermap.org/data/2.5')),
),
),
),
],
child: const AnalyticsPageForm(),
);

View File

@ -9,6 +9,7 @@ class RemoteDeviceLocationService implements DeviceLocationService {
final Dio _dio;
static final _openWeatherApiKey = dotenv.env['OPEN_WEATHER_API_KEY']!;
@override
Future<DeviceLocationInfo> get(GetDeviceLocationDataParam param) async {
try {
@ -31,8 +32,12 @@ class RemoteDeviceLocationService implements DeviceLocationService {
}
Future<double?> _getAirQualityData(GetDeviceLocationDataParam param) async {
final response = await _dio.get(
'https://api.openweathermap.org/data/2.5/air_pollution',
final response = await _dio.get<Map<String, dynamic>>(
'/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<String, dynamic>;
final data = response.data ?? {};
final list = data['list'] as List<dynamic>;
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<Map<String, dynamic>>(
'/weather',
options: Options(
method: 'GET',
responseType: ResponseType.json,
),
queryParameters: {
'lat': param.latitude,
'lon': param.longitude,