fix(ui): Fix some ui bugs in DetailDeviceScreen, HomeScreen, UnregisterDeviceDialog

This commit is contained in:
anhtunz
2025-02-17 13:51:12 +07:00
parent 16244d6768
commit 50d96541e7
6 changed files with 33 additions and 11 deletions

View File

@@ -105,6 +105,8 @@ class DetailDeviceBloc extends BlocBase {
} }
sensorTemps = sensorTemps.reversed.toList(); sensorTemps = sensorTemps.reversed.toList();
sinkSensorTemps.add(sensorTemps); sinkSensorTemps.add(sensorTemps);
} else{
sinkSensorTemps.add([]);
} }
} }
} }

View File

@@ -1,12 +1,14 @@
// ignore_for_file: use_build_context_synchronously // ignore_for_file: use_build_context_synchronously
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../bloc/devices_manager_bloc.dart';
import '../../product/constant/enums/role_enums.dart'; import '../../product/constant/enums/role_enums.dart';
import '../../product/services/api_services.dart'; import '../../product/services/api_services.dart';
import '../../product/services/language_services.dart'; import '../../product/services/language_services.dart';
import '../../product/utils/response_status_utils.dart'; import '../../product/utils/response_status_utils.dart';
handleDeleteDevice(BuildContext context, String thingID, String role) { handleDeleteDevice(BuildContext context, DevicesManagerBloc devicesManagerBloc,
extID, String role) {
showDialog( showDialog(
context: context, context: context,
builder: (dialogContext) { builder: (dialogContext) {
@@ -26,9 +28,10 @@ handleDeleteDevice(BuildContext context, String thingID, String role) {
appLocalization(dialogContext).delete_button_content, appLocalization(dialogContext).delete_button_content,
style: const TextStyle(color: Colors.red), style: const TextStyle(color: Colors.red),
), ),
onPressed: () { onPressed: () async {
deleteOrUnregisterDevice(context, thingID, role); await deleteOrUnregisterDevice(
Navigator.of(context).pop(); context, devicesManagerBloc, extID, role);
Navigator.of(dialogContext).pop();
}, },
), ),
], ],
@@ -37,12 +40,12 @@ handleDeleteDevice(BuildContext context, String thingID, String role) {
); );
} }
deleteOrUnregisterDevice( deleteOrUnregisterDevice(BuildContext context, DevicesManagerBloc devicesBloc,
BuildContext context, String thingID, String role) async { String extID, String role) async {
APIServices apiServices = APIServices(); APIServices apiServices = APIServices();
if (role == RoleEnums.USER.name) { if (role == RoleEnums.USER.name) {
Map<String, dynamic> body = { Map<String, dynamic> body = {
"thing_id": thingID, "ext_id": extID,
}; };
int statusCode = await apiServices.unregisterDevice(body); int statusCode = await apiServices.unregisterDevice(body);
showSnackBarResponseByStatusCode( showSnackBarResponseByStatusCode(
@@ -50,12 +53,14 @@ deleteOrUnregisterDevice(
statusCode, statusCode,
appLocalization(context).notification_delete_device_success, appLocalization(context).notification_delete_device_success,
appLocalization(context).notification_delete_device_failed); appLocalization(context).notification_delete_device_failed);
devicesBloc.getDeviceByState(-2);
} else { } else {
int statusCode = await apiServices.deleteDeviceByAdmin(thingID); int statusCode = await apiServices.deleteDeviceByAdmin(extID);
showSnackBarResponseByStatusCode( showSnackBarResponseByStatusCode(
context, context,
statusCode, statusCode,
appLocalization(context).notification_delete_device_success, appLocalization(context).notification_delete_device_success,
appLocalization(context).notification_delete_device_failed); appLocalization(context).notification_delete_device_failed);
devicesBloc.getDeviceByState(-2);
} }
} }

View File

@@ -540,6 +540,12 @@ class _DetailDeviceScreenState extends State<DetailDeviceScreen> {
child: CircularProgressIndicator(), child: CircularProgressIndicator(),
), ),
); );
} else if (sensorTempsSnapshot.data!.isEmpty) {
return Center(
child: Text(
appLocalization(context).no_data_message,
),
);
} else { } else {
return AspectRatio( return AspectRatio(
aspectRatio: 3, aspectRatio: 3,

View File

@@ -322,7 +322,7 @@ class DeviceSource extends DataTableSource {
icon: const Icon(Icons.build, color: Colors.blue)), icon: const Icon(Icons.build, color: Colors.blue)),
IconButton( IconButton(
onPressed: () async { onPressed: () async {
handleDeleteDevice(context, device.thingId!, role); handleDeleteDevice(context,devicesBloc, device.extId!, role);
}, },
icon: const Icon(Icons.delete, color: Colors.red)), icon: const Icon(Icons.delete, color: Colors.red)),
], ],

View File

@@ -2,6 +2,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:intl/intl.dart';
import 'package:sfm_app/feature/home/device_alias_model.dart'; import 'package:sfm_app/feature/home/device_alias_model.dart';
import '../../../product/constant/enums/app_route_enums.dart'; import '../../../product/constant/enums/app_route_enums.dart';
import '../../../product/constant/image/image_constants.dart'; import '../../../product/constant/image/image_constants.dart';
@@ -19,7 +20,15 @@ Future<Widget> notificationCard(BuildContext context, String notiticationType,
.getFullDeviceLocation(context, device.areaPath!); .getFullDeviceLocation(context, device.areaPath!);
} }
String path = ""; 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") { if (notiticationType == "lowBattery") {
path = ImageConstants.instance.getImage("low_battery"); path = ImageConstants.instance.getImage("low_battery");
} }