load energy consumption by phases from bloc, and made the widget use the said data.

This commit is contained in:
Faris Armoush
2025-05-04 14:24:53 +03:00
parent 69c9240641
commit 3d6a60b406

View File

@ -1,58 +1,81 @@
import 'package:flutter/material.dart'; 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/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/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/color_manager.dart';
import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart';
import 'package:syncrow_web/utils/style.dart'; import 'package:syncrow_web/utils/style.dart';
class EnergyConsumptionByPhasesChartBox extends StatelessWidget { class EnergyConsumptionByPhasesChartBox extends StatefulWidget {
const EnergyConsumptionByPhasesChartBox({super.key}); const EnergyConsumptionByPhasesChartBox({super.key});
@override
State<EnergyConsumptionByPhasesChartBox> createState() =>
_EnergyConsumptionByPhasesChartBoxState();
}
class _EnergyConsumptionByPhasesChartBoxState
extends State<EnergyConsumptionByPhasesChartBox> {
@override
void initState() {
const param = GetEnergyConsumptionByPhasesParam();
context.read<EnergyConsumptionByPhasesBloc>().add(
const LoadEnergyConsumptionByPhasesEvent(param: param),
);
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return BlocBuilder<EnergyConsumptionByPhasesBloc,
padding: const EdgeInsetsDirectional.all(20), EnergyConsumptionByPhasesState>(
decoration: secondarySection, builder: (context, state) {
child: Column( return Container(
mainAxisSize: MainAxisSize.min, padding: const EdgeInsetsDirectional.all(20),
spacing: 20, decoration: secondarySection,
children: [ child: Column(
Row( mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, spacing: 20,
mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Expanded( Row(
flex: 4, crossAxisAlignment: CrossAxisAlignment.center,
child: FittedBox( mainAxisAlignment: MainAxisAlignment.center,
fit: BoxFit.scaleDown, children: [
child: ChartTitle( Expanded(
title: Text( flex: 4,
'Energy Consumption by Phases', child: FittedBox(
style: context.textTheme.titleLarge?.copyWith( fit: BoxFit.scaleDown,
fontSize: 14, child: ChartTitle(
fontWeight: FontWeight.w400, title: Text(
color: ColorsManager.textPrimaryColor, '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,
),
),
],
),
); );
} }