mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-13 08:37:45 +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/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.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/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_date_picker_bloc/analytics_date_picker_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/modules/analytics/blocs/analytics_devices/analytics_devices_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/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_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/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_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/energy_consumption_per_device/remote_energy_consumption_per_device_service.dart';
|
||||||
import 'package:syncrow_web/pages/analytics/services/occupacy/remote_occupancy_service.dart';
|
import 'package:syncrow_web/pages/analytics/services/occupacy/remote_occupancy_service.dart';
|
||||||
@ -101,6 +104,13 @@ class _AnalyticsPageState extends State<AnalyticsPage> {
|
|||||||
FakeRangeOfAqiService(),
|
FakeRangeOfAqiService(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
BlocProvider(
|
||||||
|
create: (context) => DeviceLocationBloc(
|
||||||
|
RemoteDeviceLocationService(
|
||||||
|
Dio(BaseOptions(baseUrl: 'https://api.openweathermap.org/data/2.5')),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
child: const AnalyticsPageForm(),
|
child: const AnalyticsPageForm(),
|
||||||
);
|
);
|
||||||
|
@ -9,6 +9,7 @@ class RemoteDeviceLocationService implements DeviceLocationService {
|
|||||||
|
|
||||||
final Dio _dio;
|
final Dio _dio;
|
||||||
static final _openWeatherApiKey = dotenv.env['OPEN_WEATHER_API_KEY']!;
|
static final _openWeatherApiKey = dotenv.env['OPEN_WEATHER_API_KEY']!;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<DeviceLocationInfo> get(GetDeviceLocationDataParam param) async {
|
Future<DeviceLocationInfo> get(GetDeviceLocationDataParam param) async {
|
||||||
try {
|
try {
|
||||||
@ -31,8 +32,12 @@ class RemoteDeviceLocationService implements DeviceLocationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<double?> _getAirQualityData(GetDeviceLocationDataParam param) async {
|
Future<double?> _getAirQualityData(GetDeviceLocationDataParam param) async {
|
||||||
final response = await _dio.get(
|
final response = await _dio.get<Map<String, dynamic>>(
|
||||||
'https://api.openweathermap.org/data/2.5/air_pollution',
|
'/air_pollution/history',
|
||||||
|
options: Options(
|
||||||
|
method: 'GET',
|
||||||
|
responseType: ResponseType.json,
|
||||||
|
),
|
||||||
queryParameters: {
|
queryParameters: {
|
||||||
'lat': param.latitude,
|
'lat': param.latitude,
|
||||||
'lon': param.longitude,
|
'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>;
|
final list = data['list'] as List<dynamic>;
|
||||||
if (list.isEmpty) return null;
|
if (list.isEmpty) return null;
|
||||||
|
|
||||||
@ -53,8 +58,12 @@ class RemoteDeviceLocationService implements DeviceLocationService {
|
|||||||
final start = DateTime(now.year, now.month, now.day);
|
final start = DateTime(now.year, now.month, now.day);
|
||||||
final end = DateTime(now.year, now.month, now.day, 23, 59, 59);
|
final end = DateTime(now.year, now.month, now.day, 23, 59, 59);
|
||||||
try {
|
try {
|
||||||
final response = await _dio.get(
|
final response = await _dio.get<Map<String, dynamic>>(
|
||||||
'https://api.openweathermap.org/data/2.5/weather',
|
'/weather',
|
||||||
|
options: Options(
|
||||||
|
method: 'GET',
|
||||||
|
responseType: ResponseType.json,
|
||||||
|
),
|
||||||
queryParameters: {
|
queryParameters: {
|
||||||
'lat': param.latitude,
|
'lat': param.latitude,
|
||||||
'lon': param.longitude,
|
'lon': param.longitude,
|
||||||
|
Reference in New Issue
Block a user