make the aqi range chart read its data from RangeOfAqiBloc.

This commit is contained in:
Faris Armoush
2025-05-26 11:22:05 +03:00
parent d4dd7a19ba
commit 4af81bcc10
2 changed files with 46 additions and 72 deletions

View File

@ -1,25 +1,34 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:syncrow_web/pages/analytics/models/range_of_aqi.dart';
import 'package:syncrow_web/pages/analytics/modules/air_quality/helpers/range_of_aqi_charts_helper.dart';
import 'package:syncrow_web/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart';
import 'package:syncrow_web/utils/color_manager.dart';
class RangeOfAqiChart extends StatelessWidget {
final List<double> minValues;
final List<double> avgValues;
final List<double> maxValues;
final List<RangeOfAqi> chartData;
const RangeOfAqiChart({
super.key,
required this.minValues,
required this.avgValues,
required this.maxValues,
required this.chartData,
});
List<(List<double> values, Color color, Color? dotColor)> _lines() => [
(maxValues, const Color(0xFF962DFF), const Color(0xFF5F00BD)),
(avgValues, Colors.white, null),
(minValues, const Color(0xFF93AAFD), const Color(0xFF023DFE)),
(
chartData.map((e) => e.max).toList(),
const Color(0xFF962DFF),
const Color(0xFF5F00BD)
),
(
chartData.map((e) => e.avg).toList(),
Colors.white,
null,
),
(
chartData.map((e) => e.min).toList(),
const Color(0xFF93AAFD),
const Color(0xFF023DFE)
),
];
@override

View File

@ -1,6 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/analytics/modules/air_quality/blocs/range_of_aqi/range_of_aqi_bloc.dart';
import 'package:syncrow_web/pages/analytics/modules/air_quality/widgets/range_of_aqi_chart.dart';
import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/chart_title.dart';
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
import 'package:syncrow_web/utils/style.dart';
class RangeOfAqiChartBox extends StatelessWidget {
@ -8,70 +11,32 @@ class RangeOfAqiChartBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsetsDirectional.all(30),
decoration: subSectionContainerDecoration.copyWith(
borderRadius: BorderRadius.circular(30),
),
child: const Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ChartTitle(title: Text('Range of AQI')),
SizedBox(height: 10),
Divider(),
SizedBox(height: 20),
Expanded(
child: RangeOfAqiChart(
avgValues: [
50,
70,
90,
110,
130,
150,
170,
190,
210,
230,
250,
270,
290,
],
minValues: [
0,
20,
40,
60,
80,
100,
120,
140,
160,
180,
200,
220,
240,
],
maxValues: [
100,
120,
140,
160,
180,
200,
220,
240,
260,
280,
300,
301,
301,
],
),
return BlocBuilder<RangeOfAqiBloc, RangeOfAqiState>(
builder: (context, state) {
return Container(
padding: const EdgeInsetsDirectional.all(30),
decoration: subSectionContainerDecoration.copyWith(
borderRadius: BorderRadius.circular(30),
),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AnalyticsErrorWidget(state.errorMessage),
const SizedBox(height: 10),
const ChartTitle(title: Text('Range of AQI')),
const SizedBox(height: 10),
const Divider(),
const SizedBox(height: 20),
Expanded(
child: RangeOfAqiChart(
chartData: state.rangeOfAqi,
),
),
],
),
);
},
);
}
}