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: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<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
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<EnergyConsumptionByPhasesBloc,
EnergyConsumptionByPhasesState>(
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,
),
),
],
),
);
},
);
}