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

View File

@ -1,6 +1,9 @@
import 'package:flutter/material.dart'; 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/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/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'; import 'package:syncrow_web/utils/style.dart';
class RangeOfAqiChartBox extends StatelessWidget { class RangeOfAqiChartBox extends StatelessWidget {
@ -8,70 +11,32 @@ class RangeOfAqiChartBox extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return BlocBuilder<RangeOfAqiBloc, RangeOfAqiState>(
padding: const EdgeInsetsDirectional.all(30), builder: (context, state) {
decoration: subSectionContainerDecoration.copyWith( return Container(
borderRadius: BorderRadius.circular(30), padding: const EdgeInsetsDirectional.all(30),
), decoration: subSectionContainerDecoration.copyWith(
child: const Column( borderRadius: BorderRadius.circular(30),
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,
],
),
), ),
], 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,
),
),
],
),
);
},
); );
} }
} }