Update Pie Chart In DeviceManagerScreen

This commit is contained in:
anhtunz
2024-12-24 11:16:00 +07:00
parent e047fe1e27
commit 77afc09d19
6 changed files with 297 additions and 29 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:sfm_app/product/shared/shared_pie_chart.dart';
import 'add_new_device_widget.dart';
import 'delete_device_widget.dart';
import 'device_model.dart';
@@ -50,6 +51,7 @@ class _DevicesManagerScreenState extends State<DevicesManagerScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
// backgroundColor: Colors.grey.withOpacity(0.6),
body: SafeArea(
child: StreamBuilder<List<Device>>(
stream: devicesManagerBloc.streamAllDevices,
@@ -61,7 +63,7 @@ class _DevicesManagerScreenState extends State<DevicesManagerScreen> {
} else {
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
// mainAxisSize: MainAxisSize.min,
children: [
StreamBuilder<String>(
stream: devicesManagerBloc.streamUserRole,
@@ -79,37 +81,53 @@ class _DevicesManagerScreenState extends State<DevicesManagerScreen> {
if (roleSnapshot.data == RoleEnums.ADMIN.name ||
roleSnapshot.data == RoleEnums.USER.name)
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_action))),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceName))),
child: Text(appLocalization(context)
.paginated_data_table_column_action),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceStatus))),
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceName),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceBaterry))),
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceStatus),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceSignal))),
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceBaterry),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceTemperature))),
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceSignal),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceHump))),
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceTemperature),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_devicePower))),
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_deviceHump),
),
),
DataColumn(
label: Center(
child: Text(appLocalization(context)
.paginated_data_table_column_devicePower),
),
),
],
onPageChanged: (int pageIndex) {
// log('Chuyen page: $pageIndex');
@@ -143,7 +161,30 @@ class _DevicesManagerScreenState extends State<DevicesManagerScreen> {
),
);
},
)
),
SizedBox(height: context.lowValue),
Text(
appLocalization(context).overview_message,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: context.lowValue),
StreamBuilder<Map<String, List<Device>>>(
stream: devicesManagerBloc.streamDeviceByState,
builder: (context, devicesByStateSnapshot) {
if (devicesByStateSnapshot.data == null) {
devicesManagerBloc.getDevice();
return const Center(
child: CircularProgressIndicator());
} else {
return SharedPieChart(
deviceByState: devicesByStateSnapshot.data ?? {});
}
},
),
SizedBox(height: context.mediumValue),
],
),
);