From e43de3f64ce10ef99dad7eeebdf43e8cdba81d24 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Sun, 4 May 2025 10:57:42 +0300 Subject: [PATCH] Introduce ChartTitle widget for consistent chart headings in EnergyConsumptionPerDeviceChartBox and TotalEnergyConsumptionChartBox --- .../energy_management/widgets/chart_title.dart | 18 ++++++++++++++++++ ...nergy_consumption_per_device_chart_box.dart | 9 ++------- ...gy_consumption_per_device_devices_list.dart | 5 +---- .../total_energy_consumption_chart_box.dart | 9 ++------- 4 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 lib/pages/analytics/modules/energy_management/widgets/chart_title.dart diff --git a/lib/pages/analytics/modules/energy_management/widgets/chart_title.dart b/lib/pages/analytics/modules/energy_management/widgets/chart_title.dart new file mode 100644 index 00000000..795bec6e --- /dev/null +++ b/lib/pages/analytics/modules/energy_management/widgets/chart_title.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +class ChartTitle extends StatelessWidget { + const ChartTitle({super.key, required this.title}); + + final Widget title; + + @override + Widget build(BuildContext context) { + return DefaultTextStyle( + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.w700, + ), + child: title, + ); + } +} diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart index b76c3e58..d45e64ac 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart_box.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_chart.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart'; import 'package:syncrow_web/utils/style.dart'; @@ -20,13 +21,7 @@ class EnergyConsumptionPerDeviceChartBox extends StatelessWidget { Row( spacing: 32, children: [ - Text( - 'Energy Consumption per Device', - style: TextStyle( - fontSize: 22, - fontWeight: FontWeight.w700, - ), - ), + ChartTitle(title: Text('Energy Consumption per Device')), Spacer(), Expanded(flex: 2, child: EnergyConsumptionPerDeviceDevicesList()), ], diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart index 4e31aba5..8a6f4f4c 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart @@ -13,10 +13,7 @@ class EnergyConsumptionPerDeviceDevicesList extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, - children: List.generate( - 20, - (index) => _buildDeviceCell(index), - ).toList(), + children: List.generate(20, (index) => _buildDeviceCell(index)).toList(), ), ); } diff --git a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart index 7c104966..aba6778a 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart_box.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/blocs/total_energy_consumption/total_energy_consumption_bloc.dart'; +import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart'; import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/total_energy_consumption_chart.dart'; import 'package:syncrow_web/pages/analytics/params/get_total_energy_consumption_param.dart'; import 'package:syncrow_web/utils/style.dart'; @@ -40,13 +41,7 @@ class _TotalEnergyConsumptionChartBoxState spacing: 20, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'Total Energy Consumption', - style: TextStyle( - fontSize: 22, - fontWeight: FontWeight.w700, - ), - ), + ChartTitle(title: Text('Total Energy Consumption')), Divider(), TotalEnergyConsumptionChart(chartData: state.chartData), ],