From 50d96541e7d3832a1ce24ff9d3d4d228a3583574 Mon Sep 17 00:00:00 2001 From: anhtunz Date: Mon, 17 Feb 2025 13:51:12 +0700 Subject: [PATCH] fix(ui): Fix some ui bugs in DetailDeviceScreen, HomeScreen, UnregisterDeviceDialog --- lib/bloc/device_detail_bloc.dart | 2 ++ lib/feature/devices/delete_device_widget.dart | 21 ++++++++++++------- .../device_detail/device_detail_screen.dart | 6 ++++++ .../devices/devices_manager_screen.dart | 2 +- lib/feature/home/shared/alert_card.dart | 11 +++++++++- lib/feature/home/shared/warning_card.dart | 2 +- 6 files changed, 33 insertions(+), 11 deletions(-) diff --git a/lib/bloc/device_detail_bloc.dart b/lib/bloc/device_detail_bloc.dart index c2a7825..ee247e3 100644 --- a/lib/bloc/device_detail_bloc.dart +++ b/lib/bloc/device_detail_bloc.dart @@ -105,6 +105,8 @@ class DetailDeviceBloc extends BlocBase { } sensorTemps = sensorTemps.reversed.toList(); sinkSensorTemps.add(sensorTemps); + } else{ + sinkSensorTemps.add([]); } } } diff --git a/lib/feature/devices/delete_device_widget.dart b/lib/feature/devices/delete_device_widget.dart index 49ac52a..299c0b7 100644 --- a/lib/feature/devices/delete_device_widget.dart +++ b/lib/feature/devices/delete_device_widget.dart @@ -1,12 +1,14 @@ // ignore_for_file: use_build_context_synchronously import 'package:flutter/material.dart'; +import '../../bloc/devices_manager_bloc.dart'; import '../../product/constant/enums/role_enums.dart'; import '../../product/services/api_services.dart'; import '../../product/services/language_services.dart'; import '../../product/utils/response_status_utils.dart'; -handleDeleteDevice(BuildContext context, String thingID, String role) { +handleDeleteDevice(BuildContext context, DevicesManagerBloc devicesManagerBloc, + extID, String role) { showDialog( context: context, builder: (dialogContext) { @@ -26,9 +28,10 @@ handleDeleteDevice(BuildContext context, String thingID, String role) { appLocalization(dialogContext).delete_button_content, style: const TextStyle(color: Colors.red), ), - onPressed: () { - deleteOrUnregisterDevice(context, thingID, role); - Navigator.of(context).pop(); + onPressed: () async { + await deleteOrUnregisterDevice( + context, devicesManagerBloc, extID, role); + Navigator.of(dialogContext).pop(); }, ), ], @@ -37,12 +40,12 @@ handleDeleteDevice(BuildContext context, String thingID, String role) { ); } -deleteOrUnregisterDevice( - BuildContext context, String thingID, String role) async { +deleteOrUnregisterDevice(BuildContext context, DevicesManagerBloc devicesBloc, + String extID, String role) async { APIServices apiServices = APIServices(); if (role == RoleEnums.USER.name) { Map body = { - "thing_id": thingID, + "ext_id": extID, }; int statusCode = await apiServices.unregisterDevice(body); showSnackBarResponseByStatusCode( @@ -50,12 +53,14 @@ deleteOrUnregisterDevice( statusCode, appLocalization(context).notification_delete_device_success, appLocalization(context).notification_delete_device_failed); + devicesBloc.getDeviceByState(-2); } else { - int statusCode = await apiServices.deleteDeviceByAdmin(thingID); + int statusCode = await apiServices.deleteDeviceByAdmin(extID); showSnackBarResponseByStatusCode( context, statusCode, appLocalization(context).notification_delete_device_success, appLocalization(context).notification_delete_device_failed); + devicesBloc.getDeviceByState(-2); } } diff --git a/lib/feature/devices/device_detail/device_detail_screen.dart b/lib/feature/devices/device_detail/device_detail_screen.dart index 0be363e..c2b37d0 100644 --- a/lib/feature/devices/device_detail/device_detail_screen.dart +++ b/lib/feature/devices/device_detail/device_detail_screen.dart @@ -540,6 +540,12 @@ class _DetailDeviceScreenState extends State { child: CircularProgressIndicator(), ), ); + } else if (sensorTempsSnapshot.data!.isEmpty) { + return Center( + child: Text( + appLocalization(context).no_data_message, + ), + ); } else { return AspectRatio( aspectRatio: 3, diff --git a/lib/feature/devices/devices_manager_screen.dart b/lib/feature/devices/devices_manager_screen.dart index e4e86a8..2883bfc 100644 --- a/lib/feature/devices/devices_manager_screen.dart +++ b/lib/feature/devices/devices_manager_screen.dart @@ -322,7 +322,7 @@ class DeviceSource extends DataTableSource { icon: const Icon(Icons.build, color: Colors.blue)), IconButton( onPressed: () async { - handleDeleteDevice(context, device.thingId!, role); + handleDeleteDevice(context,devicesBloc, device.extId!, role); }, icon: const Icon(Icons.delete, color: Colors.red)), ], diff --git a/lib/feature/home/shared/alert_card.dart b/lib/feature/home/shared/alert_card.dart index 4ef5067..7615cf4 100644 --- a/lib/feature/home/shared/alert_card.dart +++ b/lib/feature/home/shared/alert_card.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:intl/intl.dart'; import 'package:sfm_app/feature/home/device_alias_model.dart'; import '../../../product/constant/enums/app_route_enums.dart'; import '../../../product/constant/image/image_constants.dart'; @@ -19,7 +20,15 @@ Future notificationCard(BuildContext context, String notiticationType, .getFullDeviceLocation(context, device.areaPath!); } String path = ""; - DateTime time = DateTime.now(); + // DateTime time = DateTime.now(); + String time = ""; + for (var sensor in device.status!.sensors!) { + if (sensor.name! == "7") { + DateTime dateTime = + DateTime.fromMillisecondsSinceEpoch((sensor.time!) * 1000); + time = DateFormat('yyyy-MM-dd HH:mm:ss').format(dateTime); + } + } if (notiticationType == "lowBattery") { path = ImageConstants.instance.getImage("low_battery"); } diff --git a/lib/feature/home/shared/warning_card.dart b/lib/feature/home/shared/warning_card.dart index c6784e8..60cbda7 100644 --- a/lib/feature/home/shared/warning_card.dart +++ b/lib/feature/home/shared/warning_card.dart @@ -18,7 +18,7 @@ Future warningCard(BuildContext context, APIServices apiServices, Color backgroundColor = Colors.blue; Color textColor = Colors.white; String message = ""; - String fullLocation = ""; + String fullLocation = ""; if (device.areaPath != "") { fullLocation = await DeviceUtils.instance .getFullDeviceLocation(context, device.areaPath!);