From 3d6a60b40681d96097c59a4f55c84858b463b93a Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Sun, 4 May 2025 14:24:53 +0300 Subject: [PATCH] load energy consumption by phases from bloc, and made the widget use the said data. --- ...nergy_consumption_by_phases_chart_box.dart | 95 ++++++++++++------- 1 file changed, 59 insertions(+), 36 deletions(-) diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart index 58ca6e68..31ddb765 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_by_phases_chart_box.dart @@ -1,58 +1,81 @@ import 'package:flutter/material.dart'; -import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/energy_consumption_by_phases_chart_helper.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_web/pages/analytics/modules/energy_management/blocs/energy_consumption_by_phases/energy_consumption_by_phases_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/energy_consumption_by_phases_chart.dart'; +import 'package:syncrow_web/pages/analytics/params/get_energy_consumption_by_phases_param.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/style.dart'; -class EnergyConsumptionByPhasesChartBox extends StatelessWidget { +class EnergyConsumptionByPhasesChartBox extends StatefulWidget { const EnergyConsumptionByPhasesChartBox({super.key}); + @override + State createState() => + _EnergyConsumptionByPhasesChartBoxState(); +} + +class _EnergyConsumptionByPhasesChartBoxState + extends State { + @override + void initState() { + const param = GetEnergyConsumptionByPhasesParam(); + context.read().add( + const LoadEnergyConsumptionByPhasesEvent(param: param), + ); + super.initState(); + } + @override Widget build(BuildContext context) { - return Container( - padding: const EdgeInsetsDirectional.all(20), - decoration: secondarySection, - child: Column( - mainAxisSize: MainAxisSize.min, - spacing: 20, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, + return BlocBuilder( + builder: (context, state) { + return Container( + padding: const EdgeInsetsDirectional.all(20), + decoration: secondarySection, + child: Column( + mainAxisSize: MainAxisSize.min, + spacing: 20, children: [ - Expanded( - flex: 4, - child: FittedBox( - fit: BoxFit.scaleDown, - child: ChartTitle( - title: Text( - 'Energy Consumption by Phases', - style: context.textTheme.titleLarge?.copyWith( - fontSize: 14, - fontWeight: FontWeight.w400, - color: ColorsManager.textPrimaryColor, + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + flex: 4, + child: FittedBox( + fit: BoxFit.scaleDown, + child: ChartTitle( + title: Text( + 'Energy Consumption by Phases', + style: context.textTheme.titleLarge?.copyWith( + fontSize: 14, + fontWeight: FontWeight.w400, + color: ColorsManager.textPrimaryColor, + ), + ), ), ), ), + const Spacer(), + ...<(String title, double opacity)>[ + ('A', 0.8), + ('B', 0.4), + ('C', 0.15), + ].map((phase) => _buildPhaseCell(context, phase)), + ], + ), + Expanded( + child: EnergyConsumptionByPhasesChart( + energyData: state.chartData, ), ), - const Spacer(), - ...<(String title, double opacity)>[ - ('A', 0.8), - ('B', 0.4), - ('C', 0.15), - ].map((phase) => _buildPhaseCell(context, phase)), ], ), - const Expanded( - child: EnergyConsumptionByPhasesChart( - energyData: EnergyConsumptionByPhasesChartHelper.fakeData, - ), - ), - ], - ), + ); + }, ); }