mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
Injected DeviceLocationBloc
into AnalyticsPage
.
This commit is contained in:
@ -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(),
|
||||
);
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user