/// Bar chart example import 'package:flutter/material.dart'; import 'package:charts_flutter/flutter.dart' as charts; class GroupedBarChart extends StatelessWidget { final List seriesList; final bool animate; GroupedBarChart(this.seriesList, {this.animate}); factory GroupedBarChart.withSampleData() { return new GroupedBarChart( _createSampleData(), // Disable animations for image tests. animate: false, ); } @override Widget build(BuildContext context) { return new charts.BarChart( seriesList, animate: animate, barGroupingType: charts.BarGroupingType.grouped, ); } /// Create series list with multiple series static List> _createSampleData() { final desktopSalesData = [ new OrdinalSales('2014', 5), new OrdinalSales('2015', 25), new OrdinalSales('2016', 100), new OrdinalSales('2017', 75), ]; final tabletSalesData = [ new OrdinalSales('2014', 25), new OrdinalSales('2015', 50), new OrdinalSales('2016', 10), new OrdinalSales('2017', 20), ]; final mobileSalesData = [ new OrdinalSales('2014', 10), new OrdinalSales('2015', 15), new OrdinalSales('2016', 50), new OrdinalSales('2017', 45), ]; return [ new charts.Series( id: 'Desktop', domainFn: (OrdinalSales sales, _) => sales.year, measureFn: (OrdinalSales sales, _) => sales.sales, data: desktopSalesData, ), new charts.Series( id: 'Tablet', domainFn: (OrdinalSales sales, _) => sales.year, measureFn: (OrdinalSales sales, _) => sales.sales, data: tabletSalesData, ), new charts.Series( id: 'Mobile', domainFn: (OrdinalSales sales, _) => sales.year, measureFn: (OrdinalSales sales, _) => sales.sales, data: mobileSalesData, ), ]; } } /// Sample ordinal data type. class OrdinalSales { final String year; final int sales; OrdinalSales(this.year, this.sales); }