chart bug fix
This commit is contained in:
parent
627cc6a34e
commit
dafc089ae9
@ -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 {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user