chart bug fix

This commit is contained in:
venbaittech 2025-02-14 09:30:01 +05:30
parent 627cc6a34e
commit dafc089ae9

View File

@ -1,6 +1,7 @@
import 'dart:math'; import 'dart:math';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// import 'package:syncfusion_flutter_charts/charts.dart'; // import 'package:syncfusion_flutter_charts/charts.dart';
@ -259,16 +260,24 @@ class ChartWidget extends StatelessWidget {
}, },
), ),
), ),
SizedBox(height: 20), SizedBox(height: 25),
Padding(
padding: Flexible(
const EdgeInsets.all(8.0), // Add spacing around indicators child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Container(
constraints: BoxConstraints(minHeight: 5), // Allow dynamic height
child: Padding(
padding: const EdgeInsets.only(left: 8.0 ,right: 8.0,bottom: 8.0,top:20.0),
child: Wrap( child: Wrap(
spacing: 12, spacing: 12,
runSpacing: 8, runSpacing: 8,
children: generateIndicators(chartData, chartData['group_by']), children: generateIndicators(chartData, chartData['group_by']),
), ),
), ),
),
),
),
], ],
); );
case 'fl_stacked_bar': case 'fl_stacked_bar':
@ -912,19 +921,27 @@ class ChartWidget extends StatelessWidget {
return Padding( return Padding(
padding: const EdgeInsets.only(top: 8.0), padding: const EdgeInsets.only(top: 8.0),
child: Transform.rotate( child: Transform.rotate(
angle: -45 * angle: -1.58,
(3.1415927 / 180), // Rotating by -45 degrees // angle: -45 *
// (3.1415927 / 180), // Rotating by -45 degrees
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Center(
xAxisData[value.toInt()], child: SizedBox(
style: TextStyle(fontSize: 12), width: 100,
child: Text(
xAxisData[value.toInt()],
style: const TextStyle(fontSize: 12),
softWrap: true,
maxLines: 2,
),
),
), ),
), ),
); );
} }
return Container(); return Container();
}, },
reservedSize: 60, reservedSize: 85,
), ),
), ),
topTitles: AxisTitles( topTitles: AxisTitles(
@ -979,6 +996,16 @@ class ChartWidget extends StatelessWidget {
} else if (chartData['dataset'] == 'labour_force') { } else if (chartData['dataset'] == 'labour_force') {
crop = item['ObsKey']['GENDER']; crop = item['ObsKey']['GENDER'];
cropType = item['ObsKey'][groupByKey]; cropType = item['ObsKey'][groupByKey];
} else if (chartData['dataset'] == 'clinics') {
if (kDebugMode) {
print('forclinics');
print('ObsKey: ${item['ObsKey']}');
// print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}');
}
crop = item['ObsKey']['MEASURE'];
cropType = item['ObsKey'][groupByKey];
} else { } else {
crop = item['ObsKey']['CROP']; crop = item['ObsKey']['CROP'];
cropType = item['ObsKey'][groupByKey]; cropType = item['ObsKey'][groupByKey];
@ -1169,7 +1196,52 @@ class ChartWidget extends StatelessWidget {
if (chartData['dataset'] == 'natural_reserves') { if (chartData['dataset'] == 'natural_reserves') {
crop = item['ObsKey']['NR_TYPE']; crop = item['ObsKey']['NR_TYPE'];
cropType = item['ObsKey'][groupByKey]; cropType = item['ObsKey'][groupByKey];
} else { }
else if(chartData['dataset'] == 'gdp')
{
print("ForGDP");
if (kDebugMode) {
print('ObsKey: ${item['ObsKey']}');
// print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}');
}
crop = item['ObsKey']['BOP_ITEM'];
cropType = item['ObsKey'][groupByKey];
} else if(chartData['dataset'] == 'air_transport')
{
print("Forair_transport");
if (kDebugMode) {
print('ObsKey: ${item['ObsKey']}');
// print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}');
}
crop = item['ObsKey']['MEASURE'];
cropType = item['ObsKey'][groupByKey];
} else if(chartData['dataset'] == 'import')
{
print("Forimport");
if (kDebugMode) {
print('ObsKey: ${item['ObsKey']}');
// print('NR_TYPE: ${item['ObsKey']?['NR_TYPE']}');
}
crop = item['ObsKey']['COUNTRY'];
cropType = item['ObsKey'][groupByKey];
}
else if(chartData['dataset'] == 'gdpq')
{
print("ForGDPq");
if (kDebugMode) {
print('ObsKey: ${item['ObsKey']}');
}
crop = item['ObsKey']['MEASURE'];
// crop = item['ObsKey']['TIME_PERIOD'];
cropType = item['ObsKey'][groupByKey];
}
else {
crop = item['ObsKey']['CROP']; crop = item['ObsKey']['CROP'];
cropType = item['ObsKey'][groupByKey]; cropType = item['ObsKey'][groupByKey];
} }
@ -1184,6 +1256,18 @@ class ChartWidget extends StatelessWidget {
int rotationTurns = 1; int rotationTurns = 1;
print('Grouped Crops: $groupedCrops'); print('Grouped Crops: $groupedCrops');
int numberOfBars = groupedCrops.length; // Number of grouped sets (bar groups)
double barHeight = 40.0; // Height per individual bar
double barSpacing = 30.0; // Space between bar sets
double minHeight = 300.0; // Minimum chart height
double maxHeight = 1000.0; // Maximum chart height
// Calculate total height dynamically
double chartHeight = ((numberOfBars * barHeight) + ((numberOfBars - 1) * barSpacing))
.clamp(minHeight, maxHeight);
return Column(children: [ return Column(children: [
Text( Text(
chartData['chart_heading'] ?? '', // Chart title from data chartData['chart_heading'] ?? '', // Chart title from data
@ -1196,6 +1280,13 @@ class ChartWidget extends StatelessWidget {
SizedBox(height: 10), SizedBox(height: 10),
// Chart // Chart
Expanded( Expanded(
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child:SizedBox(
width: 1000,
height: chartHeight,
child: BarChart( child: BarChart(
BarChartData( BarChartData(
maxY: 400000, maxY: 400000,
@ -1347,7 +1438,9 @@ class ChartWidget extends StatelessWidget {
alignment: BarChartAlignment.spaceAround, alignment: BarChartAlignment.spaceAround,
), ),
), ),
) ),
),
)),
// Expanded( // Expanded(
// child: Stack( // child: Stack(
// children:[ // children:[
@ -2013,7 +2106,12 @@ class ChartWidget extends StatelessWidget {
]; ];
final barColor; final barColor;
if (chartData['dataset'] == 'general_education' || if (chartData['dataset'] == 'general_education' ||
chartData['dataset'] == 'higher_education') { chartData['dataset'] == 'higher_education' ||
chartData['dataset'] == 'air_transport' ||
chartData['dataset'] == 'labour_force' ||
chartData['dataset'] == 'gdp'
) {
barColor = uniqueColorsForTwo[colorIndex % uniqueColorsForTwo.length]; barColor = uniqueColorsForTwo[colorIndex % uniqueColorsForTwo.length];
colorIndex++; colorIndex++;
} else { } else {