We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Thanks for the plugin!! Here we go:
Describe the bug The chart should have top titles when topTitles is configured.
To Reproduce Modify the bar_chart/samples/bar_chart_sample1.dart file to have a topTitles exactly as the bottomTitles.
Screenshots
What happens:
What I was expecting:
Versions
My code
import 'package:flutter/material.dart'; import 'dart:async'; import 'dart:math'; import 'package:fl_chart/fl_chart.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( // This is the theme of your application. // // Try running your application with "flutter run". You'll see the // application has a blue toolbar. Then, without quitting the app, try // changing the primarySwatch below to Colors.green and then invoke // "hot reload" (press "r" in the console where you ran "flutter run", // or simply save your changes to "hot reload" in a Flutter IDE). // Notice that the counter didn't reset back to zero; the application // is not restarted. primarySwatch: Colors.blue, // This makes the visual density adapt to the platform that you run // the app on. For desktop platforms, the controls will be smaller and // closer together (more dense) than on mobile platforms. visualDensity: VisualDensity.adaptivePlatformDensity, ), home: BarChartSample1(), ); } } class BarChartSample1 extends StatefulWidget { @override State<StatefulWidget> createState() => BarChartSample1State(); } class BarChartSample1State extends State<BarChartSample1> { final Color barBackgroundColor = const Color(0xff72d8bf); final Duration animDuration = const Duration(milliseconds: 250); int touchedIndex; bool isPlaying = false; @override Widget build(BuildContext context) { return AspectRatio( aspectRatio: 1, child: Card( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(18)), color: const Color(0xff81e5cd), child: Stack( children: <Widget>[ Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: <Widget>[ Text( 'Mingguan', style: TextStyle( color: const Color(0xff0f4a3c), fontSize: 24, fontWeight: FontWeight.bold), ), const SizedBox( height: 4, ), Text( 'Grafik konsumsi kalori', style: TextStyle( color: const Color(0xff379982), fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox( height: 38, ), Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: BarChart( mainBarData(), swapAnimationDuration: animDuration, ), ), ), const SizedBox( height: 12, ), ], ), ), Padding( padding: const EdgeInsets.all(8.0), child: Align( alignment: Alignment.topRight, child: IconButton( icon: Icon( isPlaying ? Icons.pause : Icons.play_arrow, color: const Color(0xff0f4a3c), ), onPressed: () { setState(() { isPlaying = !isPlaying; if (isPlaying) { refreshState(); } }); }, ), ), ) ], ), ), ); } BarChartGroupData makeGroupData( int x, double y, { bool isTouched = false, Color barColor = Colors.white, double width = 22, List<int> showTooltips = const [], }) { return BarChartGroupData( x: x, barRods: [ BarChartRodData( y: isTouched ? y + 1 : y, color: isTouched ? Colors.yellow : barColor, width: width, backDrawRodData: BackgroundBarChartRodData( show: true, y: 20, color: barBackgroundColor, ), ), ], showingTooltipIndicators: showTooltips, ); } List<BarChartGroupData> showingGroups() => List.generate(7, (i) { switch (i) { case 0: return makeGroupData(0, 5, isTouched: i == touchedIndex); case 1: return makeGroupData(1, 6.5, isTouched: i == touchedIndex); case 2: return makeGroupData(2, 5, isTouched: i == touchedIndex); case 3: return makeGroupData(3, 7.5, isTouched: i == touchedIndex); case 4: return makeGroupData(4, 9, isTouched: i == touchedIndex); case 5: return makeGroupData(5, 11.5, isTouched: i == touchedIndex); case 6: return makeGroupData(6, 6.5, isTouched: i == touchedIndex); default: return null; } }); BarChartData mainBarData() { return BarChartData( barTouchData: BarTouchData( touchTooltipData: BarTouchTooltipData( tooltipBgColor: Colors.blueGrey, getTooltipItem: (group, groupIndex, rod, rodIndex) { String weekDay; switch (group.x.toInt()) { case 0: weekDay = 'Monday'; break; case 1: weekDay = 'Tuesday'; break; case 2: weekDay = 'Wednesday'; break; case 3: weekDay = 'Thursday'; break; case 4: weekDay = 'Friday'; break; case 5: weekDay = 'Saturday'; break; case 6: weekDay = 'Sunday'; break; } return BarTooltipItem( weekDay + '\n' + (rod.y - 1).toString(), TextStyle(color: Colors.yellow)); }), touchCallback: (barTouchResponse) { setState(() { if (barTouchResponse.spot != null && barTouchResponse.touchInput is! FlPanEnd && barTouchResponse.touchInput is! FlLongPressEnd) { touchedIndex = barTouchResponse.spot.touchedBarGroupIndex; } else { touchedIndex = -1; } }); }, ), titlesData: FlTitlesData( show: true, bottomTitles: SideTitles( showTitles: true, textStyle: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 14), margin: 16, getTitles: (double value) { print('test bottom'); switch (value.toInt()) { case 0: return 'CC'; case 1: return 'T'; case 2: return 'W'; case 3: return 'T'; case 4: return 'F'; case 5: return 'S'; case 6: return 'S'; default: return ''; } }, ), topTitles: SideTitles( showTitles: true, textStyle: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 24), // margin: 16, getTitles: (double value) { print('test top'); switch (value.toInt()) { case 0: return 'M'; case 1: return 'T'; case 2: return 'W'; case 3: return 'T'; case 4: return 'F'; case 5: return 'S'; case 6: return 'S'; default: return ''; } }, ), leftTitles: SideTitles( showTitles: true, ), ), borderData: FlBorderData( show: false, ), barGroups: showingGroups(), ); } Future<dynamic> refreshState() async { setState(() {}); await Future<dynamic>.delayed(animDuration + const Duration(milliseconds: 50)); if (isPlaying) { refreshState(); } } }
The text was updated successfully, but these errors were encountered:
Enabled draw topTitles in the BarChart, #394.
740e6ff
It will be fixed in the next version, Thanks for reporting!
Sorry, something went wrong.
We have published 0.11.0 version, and now you can have topTitles in the BarChart, yaay!
Check it out here:
Enabled draw topTitles in the BarChart, imaNNeo#394.
f10e397
No branches or pull requests
Thanks for the plugin!! Here we go:
Describe the bug
The chart should have top titles when topTitles is configured.
To Reproduce
Modify the bar_chart/samples/bar_chart_sample1.dart file to have a topTitles exactly as the bottomTitles.
Screenshots
What happens:
What I was expecting:
Versions
Stable v1.17.5
^0.10.1
My code
The text was updated successfully, but these errors were encountered: