Giter Club home page Giter Club logo

pie_chart's Introduction

Pie Chart Cirrus CI - Base Branch Build Status GitHub stars Twitter Follow GitHub last commit Website shields.ioOpen Source Love Discord

This Flutter package provides a Pie Chart Widget with cool animation.

More discussions on Discord: https://discord.gg/7byeCn7MGF

๐Ÿ’ป Try LIVE Demo

Live Demo: https://apgapg.github.io/pie_chart/

piechart

๐Ÿ’ป Installation

In the dependencies: section of your pubspec.yaml, add the following line:

Version

dependencies:
  pie_chart: <latest version>

โ” Usage

Import this class

import 'package:pie_chart/pie_chart.dart';

Usage is simple. Pie Chart is a widget and it just need a Map<String,double> as its data input.

PieChart

Map<String, double> dataMap = {
    "Flutter": 5,
    "React": 3,
    "Xamarin": 2,
    "Ionic": 2,
  };

- Simple Implementation

PieChart(dataMap: dataMap) 

- Full Implementation

PieChart(
      dataMap: dataMap,
      animationDuration: Duration(milliseconds: 800),
      chartLegendSpacing: 32,
      chartRadius: MediaQuery.of(context).size.width / 3.2,
      colorList: colorList,
      initialAngleInDegree: 0,
      chartType: ChartType.ring,
      ringStrokeWidth: 32,
      centerText: "HYBRID",
      legendOptions: LegendOptions(
        showLegendsInRow: false,
        legendPosition: LegendPosition.right,
        showLegends: true,
        legendShape: _BoxShape.circle,
        legendTextStyle: TextStyle(
          fontWeight: FontWeight.bold,
        ),
      ),
      chartValuesOptions: ChartValuesOptions(
        showChartValueBackground: true,
        showChartValues: true,
        showChartValuesInPercentage: false,
        showChartValuesOutside: false,
        decimalPlaces: 1,
      ),
      // gradientList: ---To add gradient colors---
      // emptyColorGradient: ---Empty Color gradient---
    )

โญ Features

Control decimal places 'decimalPlaces'

chartValuesOptions: ChartValuesOptions(
  decimalPlaces: 1,
),

Change legend position with 'legendPosition'

PieChart PieChart PieChart PieChart

Change Chart shape to ring

chartType: ChartType.ring,

PieChart

chartType: ChartType.ring,
showChartValuesOutside: true,

PieChart

Gradient Colors

Pie Chart supports gradient as colors. Just pass gradientList instead of colorList to add gradient to chart colors.

final gradientList = <List<Color>>[
  [
    Color.fromRGBO(223, 250, 92, 1),
    Color.fromRGBO(129, 250, 112, 1),
  ],
  [
    Color.fromRGBO(129, 182, 205, 1),
    Color.fromRGBO(91, 253, 199, 1),
  ],
  [
    Color.fromRGBO(175, 63, 62, 1.0),
    Color.fromRGBO(254, 154, 92, 1),
  ]
];

// Pass gradient to PieChart
gradientList: gradientList,
emptyColorGradient: [
 Color(0xff6c5ce7),
 Colors.blue,
],

PieChart

Base Chart Color

Add a base pie-chart color via:

baseChartColor: Colors.grey

Full code:

class HomePage2 extends StatelessWidget {
  HomePage2({Key? key}) : super(key: key);

  final dataMap = <String, double>{
    "Flutter": 5,
  };

  final colorList = <Color>[
    Colors.greenAccent,
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Pie Chart 1"),
      ),
      body: Container(
        padding: EdgeInsets.symmetric(horizontal: 16),
        child: PieChart(
          dataMap: dataMap,
          chartType: ChartType.ring,
          baseChartColor: Colors.grey[300]!,
          colorList: colorList,
        ),
      ),
    );
  }
}

Total Value

To show chart arcs based on your total value, add totalValue option.

class HomePage2 extends StatelessWidget {
  HomePage2({Key? key}) : super(key: key);

  final dataMap = <String, double>{
    "Flutter": 5,
  };

  final colorList = <Color>[
    Colors.greenAccent,
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Pie Chart 1"),
      ),
      body: Container(
        padding: EdgeInsets.symmetric(horizontal: 16),
        child: PieChart(
          dataMap: dataMap,
          chartType: ChartType.ring,
          baseChartColor: Colors.grey[50]!.withOpacity(0.15),
          colorList: colorList,
          chartValuesOptions: ChartValuesOptions(
            showChartValuesInPercentage: true,
          ),
          totalValue: 20,
        ),
      ),
    );
  }
}

PieChart

Center Widget

Creates a new widget placed at pie chart center

centerWidget: Container(color: Colors.red, child: const Text("Center"))

PieChart

โญ My Flutter Packages

  • json_table GitHub stars Create Flutter Json Table from json map directly.
  • avatar_glow GitHub stars Flutter Avatar Glow Widget with glowing animation.
  • search_widget GitHub stars Flutter Search Widget for selecting an option from list.
  • animating_location_pin GitHub stars Flutter Animating Location Pin Widget providing Animating Location Pin Widget which can be used while fetching device location.

โญ My Flutter Apps

๐Ÿ‘ Contribution

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

pie_chart's People

Contributors

adnanjpg avatar apgapg avatar cagdas001 avatar cyriacbijun avatar deividdwor avatar fiveone-digital avatar georgeraveen avatar git-vince avatar imagine-me avatar imgbot[bot] avatar imgbotapp avatar jithinkpraveen avatar joaonetocastro avatar marc921 avatar mschneider avatar oleksii-tatarintsev avatar pishguy avatar sharmadhiraj avatar vishnukvmd avatar vv60 avatar xsahil03x avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pie_chart's Issues

Gradient colors overlapping with each other

The following assertion was thrown during paint():
RenderBox was not laid out: RenderViewport#bc66b NEEDS-PAINT
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1979 pos 12: 'hasSize'


Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

The relevant error-causing widget was: 
  ListView ListView:file:///C:/Users/akram/myapp/lib/presentation/history/History.dart:127:28
When the exception was thrown, this was the stack: 
#2      RenderBox.size (package:flutter/src/rendering/box.dart:1979:12)
#3      RenderBox.paintBounds (package:flutter/src/rendering/box.dart:2617:41)
#4      PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:140:56)
#5      PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5)
#6      PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:198:7)
#7      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:185:7)
#8      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#9      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#10     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#11     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#12     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#13     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#14     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#15     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#16     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#17     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#18     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#19     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#20     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#21     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#22     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#23     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#24     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#25     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#26     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2844:15)
#27     RenderFlex.paint (package:flutter/src/rendering/flex.dart:1078:7)
#28     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#29     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#30     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2844:15)
#31     RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:408:5)
#32     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#33     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#34     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#35     _RenderInkFeatures.paint (package:flutter/src/material/material.dart:598:11)
#36     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#37     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#38     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#39     PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12)
#40     RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1951:15)
#41     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#42     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#43     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2844:15)
#44     RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:408:5)
#45     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#46     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#47     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#48     _RenderInkFeatures.paint (package:flutter/src/material/material.dart:598:11)
#49     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#50     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#51     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#52     PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:387:12)
#53     RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1951:15)
#54     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#55     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#56     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#57     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#58     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:187:13)
#59     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:15)
#60     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2477:7)
#61     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:141:11)
#62     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5)
#63     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:995:29)
#64     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:506:19)
#65     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:892:13)
#66     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:370:5)
#67     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146:15)
#68     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1083:9)
#69     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:997:5)
#73     _invoke (dart:ui/hooks.dart:151:10)
#74     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#75     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 5 frames from class _AssertionError and dart:async)
The following RenderObject was being processed when the exception was fired: RenderIgnorePointer#e186c relayoutBoundary=up10
...  needs compositing
...  parentData: <none> (can use size)
...  constraints: BoxConstraints(0.0<=w<=392.7, 0.0<=h<=Infinity)
...  size: MISSING
...  ignoring: false
...  ignoringSemantics: false
RenderObject: RenderIgnorePointer#e186c relayoutBoundary=up10
  needs compositing
  parentData: <none> (can use size)
  constraints: BoxConstraints(0.0<=w<=392.7, 0.0<=h<=Infinity)
  size: MISSING
  ignoring: false
  ignoringSemantics: false
...  child: RenderViewport#bc66b NEEDS-PAINT
...    needs compositing
...    parentData: <none> (can use size)
...    constraints: BoxConstraints(0.0<=w<=392.7, 0.0<=h<=Infinity)
...    layer: OffsetLayer#bfdde DETACHED
...      handles: 1
...      offset: Offset(0.0, 0.0)
...    size: MISSING
...    axisDirection: down
...    crossAxisDirection: right
...    offset: ScrollPositionWithSingleContext#f6624(offset: 0.0, range: null..null, viewport: null, ScrollableState, AlwaysScrollableScrollPhysics -> BouncingScrollPhysics -> RangeMaintainingScrollPhysics, IdleScrollActivity#30f36, ScrollDirection.idle)
...    anchor: 0.0
...    center child: RenderSliverPadding#fc714 NEEDS-LAYOUT NEEDS-PAINT
...      parentData: paintOffset=Offset(0.0, 0.0)
...      constraints: MISSING
...      geometry: null
...      padding: EdgeInsets.zero
...      textDirection: ltr
...      child: RenderSliverList#aefd6 NEEDS-LAYOUT NEEDS-PAINT
...        parentData: paintOffset=Offset(0.0, 0.0)
...        constraints: MISSING
...        geometry: null
...        no children current live
====================================================================================================

Ring type charts overlaps with neighbouring widget

It seems for the ChartType.ring, chartRadius is calculated for the inner ring, so for a thick ringStrokeWidth the ring overlaps/overflows to the neighbouring widgets. I think the chartRadius should be calculated for the outer radius of the ring so that it stays withing its space.

Custom colors

Goodmorning,

I have custom colors i would love to send within the dataMap, is it possible to do this? Because i can read from your pie_chart.dart that you already specified a list of colors.

Greetings,
Jente

initial angle is incorrect

please see attached
pie

when initian angle is zero, the first entry is blue. shouldnt it be in the position of red? if not, then what is the correct angle value for this? i tried -90 but it's not straight, somehow it's around -45 degrees and diagonal

Pie Chart Colors

Goodmorning Apgapg,

I was wondering if you had any progress on this issue?
#4

Could really use it in the next couple of days, otherwise i have to use an different plugin..

Have a nice day,
Greetings,
SJente

Is it possible to have the center text without a background?

As shown in this image here
Screen Shot 2022-01-13 at 16 49 26

I have a ring chart, I've hidden all the legends but showed the center text. No matter what I do, the white background of this center text won't go away. Here's my code:

PieChart(
emptyColor: Colors.transparent,
key: ValueKey(1),
dataMap: <String, double>{
  "prc_1": 50,
  "prc2": 50,
},
animationDuration:
    Duration(milliseconds: 800),
chartRadius:
    MediaQuery.of(context).size.width /
                3.2 >
            300
        ? 300
        : MediaQuery.of(context)
                .size
                .width /
            3.2,
colorList: <Color>[
 Colors.blue,
  Colors.white
],
initialAngleInDegree: 270,
chartType: ChartType.ring,
centerText: 'Can we\nhave this\nwithout the\nwhite\nbackground',
centerTextStyle: TextStyle(
    fontFamily: 'Overpass'),
legendOptions: LegendOptions(
  showLegends: false,
),
chartValuesOptions: ChartValuesOptions(
  showChartValues: false,
),
ringStrokeWidth: 7.5),

Update the maps value on setstate

this how i defined the pie chart map, when page load i want to set the values,0

 Map<String, double> dataMap = {
    "Income": 0,
    "Expenditure": 0,
  };

then on button press, i want update the chart value,

  child: RaisedButton(
                              onPressed: () async {
                                      setState(() {
                                        Map<String, double> dataMap = {
                                          "Income": 75,
                                          "Expenditure": 25,
                                        };
                                      
                                      });
                                    },

How to solve this issue?

Show customised labels in legend

When displaying percentage values in the graph, I would like to display the absolute values in the legend.

Would therefore be nice if there is an (optional) formatting function to generate a custom legend text from the data map entry.

(This might also be useful to dynamically abbreviate long legend texts.)

Gradient

Is there anyways to add a gradient to the colors?

Enable selecting piechart slice starting angle

First thank you for your work. This is the easiest to use flutter chart plugin on pub!

Currently the piechart starts animating from the right side of the circle (from 3 o'clock).
Is it possible to set a starting angle from where the first slice will draw?

Like in the example image below, change "starting angle" from 90ยฐ -> 0ยฐ

change_starting_angle_for_piechart

toDouble was Called on null

I/flutter (30917): โ•โ•โ•ก EXCEPTION CAUGHT BY WIDGETS LIBRARY โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• I/flutter (30917): The following NoSuchMethodError was thrown building PieChart(dirty, state: I/flutter (30917): _PieChartState#f7d87(ticker active)): I/flutter (30917): The method 'toDouble' was called on null. I/flutter (30917): Receiver: null I/flutter (30917): Tried calling: toDouble() I/flutter (30917): I/flutter (30917): When the exception was thrown, this was the stack: I/flutter (30917): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5) I/flutter (30917): #1 double.+ (dart:core-patch/double.dart:17:23) I/flutter (30917): #2 new PieChartPainter (package:pie_chart/pie_chart.dart:214:21) I/flutter (30917): #3 _PieChartState.build (package:pie_chart/pie_chart.dart:112:28) I/flutter (30917): #4 StatefulElement.build (package:flutter/src/widgets/framework.dart:3825:27) I/flutter (30917): #5 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3739:15) I/flutter (30917): #6 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #7 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #8 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #10 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #11 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #12 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #13 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #14 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #15 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #16 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #17 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #18 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #19 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #20 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #21 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #22 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #23 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #24 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #25 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #26 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #27 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #28 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #29 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #30 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #31 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4063:11) I/flutter (30917): #32 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #33 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4982:32) I/flutter (30917): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #36 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #37 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #38 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #39 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #40 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #41 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #42 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #43 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #44 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #45 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #46 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #47 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #48 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #49 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #50 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #51 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #52 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #53 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #54 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #55 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #56 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #57 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #58 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #59 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #60 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #61 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #62 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #63 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #64 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #65 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #66 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #67 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #69 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #70 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #71 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #72 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #73 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #74 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #75 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #76 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #77 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #78 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #79 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #80 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #81 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #82 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #83 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #84 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #85 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #86 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #87 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #88 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #89 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #90 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #91 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #92 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #93 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #94 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #95 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #96 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #97 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #98 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #99 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #100 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #101 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #102 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #103 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #104 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #105 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #106 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #107 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #108 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #109 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #110 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #111 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #112 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #113 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #114 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #115 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #116 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #117 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #118 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #119 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #120 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #121 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #122 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #123 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #124 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #125 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #126 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #127 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #128 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #129 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #130 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #131 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #132 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #133 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #134 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #135 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #136 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #137 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #138 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #139 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #140 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #141 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #142 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): 2 I/flutter (30917): 3 I/flutter (30917): 2.0 I/flutter (30917): 3.0 I/flutter (30917): #143 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #144 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #145 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #146 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #147 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #148 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #149 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #150 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #151 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #152 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #153 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #154 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #155 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #156 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #157 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #158 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #159 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #160 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #161 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #162 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #163 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #164 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #165 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #166 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #167 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #168 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #169 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #170 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #171 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #172 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #173 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #174 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4876:14) I/flutter (30917): #175 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #176 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #177 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #178 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #179 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #180 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #181 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #182 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #183 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #184 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #185 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #186 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #187 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #188 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #189 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #190 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #191 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #192 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3722:5) I/flutter (30917): #193 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3864:11) I/flutter (30917): #194 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3717:5) I/flutter (30917): #195 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2961:14) I/flutter (30917): #196 Element.updateChild (package:flutter/src/widgets/framework.dart:2764:12) I/flutter (30917): #197 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4659:32) I/flutter (30917): #198 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4992:17) I/flutter (30917): #199 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #200 _TheatreElement.update (package:flutter/src/widgets/overlay.dart:607:16) I/flutter (30917): #201 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #202 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #203 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #204 StatefulElement.update (package:flutter/src/widgets/framework.dart:3894:5) I/flutter (30917): #205 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #206 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #207 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #208 ProxyElement.update (package:flutter/src/widgets/framework.dart:4006:5) I/flutter (30917): #209 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #210 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14) I/flutter (30917): #211 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #212 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #213 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #214 StatefulElement.update (package:flutter/src/widgets/framework.dart:3894:5) I/flutter (30917): #215 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #216 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14) I/flutter (30917): #217 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #218 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4883:14) I/flutter (30917): #219 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15) I/flutter (30917): #220 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16) I/flutter (30917): #221 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5) I/flutter (30917): #222 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2278:33) I/flutter (30917): #223 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:700:20) I/flutter (30917): #224 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5) I/flutter (30917): #225 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1012:15) I/flutter (30917): #226 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:952:9) I/flutter (30917): #227 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:864:5) I/flutter (30917): #231 _invoke (dart:ui/hooks.dart:219:10) I/flutter (30917): #232 _drawFrame (dart:ui/hooks.dart:178:3) I/flutter (30917): (elided 3 frames from package dart:async) I/flutter (30917): โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• I/flutter (30917): Another exception was thrown: NoSuchMethodError: The method 'toDouble' was called on null. I/chatty (30917): uid=10656(com.example.mydb_todo) 1.ui identical 4 lines I/flutter (30917): Another exception was thrown: NoSuchMethodError: The method 'toDouble' was called on null.``

[Feature Request] Column View

Hi, absolutely loving this plugin for my workout app. Got the visual breakdown of what they train in like 5 minutes.

A nice feature might be a column view, where the pie chart is on top and the legend is below. This would allow each to be larger so I could use bigger fonts inside the pie chat.

Flutter 3 issue

In Flutter 3, WidgetsBinding.instance no longer requires a null safety check.

: Warning: Operand of null-aware operation '?.' has type 'WidgetsBinding' which excludes null.
../โ€ฆ/pie_chart/pie_chart.dart:42
- 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../../../../bin/flutter/packages/flutter/lib/src/widgets/binding.dart').
package:flutter/โ€ฆ/widgets/binding.dart:1
    WidgetsBinding.instance?.addPostFrameCallback((_) {

Error: The method 'getColor' isn't defined for the class 'PieChartPainter'.

I get this error

../../flutter_linux_v1.5.4-hotfix.2-stable.tar%20(1)/flutter/.pub-cache/hosted/pub.dartlang.org/pie_chart-3.1.1/lib/src/chart_painter.dart:41:38: Error: The method 'getColor' isn't defined for the class 'PieChartPainter'.
 - 'PieChartPainter' is from 'package:pie_chart/src/chart_painter.dart' ('../../flutter_linux_v1.5.4-hotfix.2-stable.tar%20(1)/flutter/.pub-cache/hosted/pub.dartlang.org/pie_chart-3.1.1/lib/src/chart_painter.dart').
Try correcting the name to the name of an existing method, or defining a method named 'getColor'.
      final paint = Paint()..color = getColor(colorList, i);
                                     ^^^^^^^^
Target kernel_snapshot failed: Exception: Errors during snapshot creation: null
build failed.

Add click support

Would be great if you could click on a piece of the pie or on a label and receive a notification of which of the values the click corresponds to.

TextStyle option for center text

Hi,

Thanks for this wonderful package.

Is it possibe to let us customize the centerText by providing textStyle option?

Otherwise, it's a very good and customizable package!

Use integer or string value for data labels

Hello All ,

In My piechart the chart data labels are currently being showned as "3.0" , i need them to be showed as "3" only
i tried changing the data type of DataMap from <String,double> to <String,int> but it seems the constructor
PieChart(dataMap: dataMap) only accepts <String,double>

am i missing anything?

Animate pie chart when data changes

I am creating a transaction app where the pie chart data changes upon toggle of a button. The charts animate when the page initially opens. However on click of the toggle button, the pie gets updated with new data without any animation. Is that the intended behaviour?

Add border property on outlying circle

Add border property so that only pie charts without any data to start with is just invisible.

an added border to show the border of the circle would be nice.

showLegends = false causes exception

Hi, is it possible to hide legends? I am displaying pie chart inside a row widget and I tried showLegends = false but i am getting 'Row's children must not contain any null value, but a null value was found at index 1' exception. Any idea?

A few issues since upgrading from 2.0.0

Hi!

A few issues since upgrading from 2.0.0

  1. showChartValuesOutside: The are not totally outside, they are partially on the chart which in my opinion doesn't look as good
  2. Legend position that was added looks bad on RTL languages.
    a) It is not aligned to the start of the container
    b) There is not enough padding between the chart and the legends
    I believe that it will be better to have LegendPosition.start and LegendPosition.end instead of left and right.
    Please test on a device with and RTL language.

Thanks for this great package. Hope you could get to fixing these issues soon.

Change label position

The label now is displayed vertically. It is possible to displayed horizontally?

I want change the legend position to top, and displayed the label horizontally.

Thanks.

Request: Omit zero values from chart

First of all great lib! good work!
I would like to request an option to omit zero values from the chart (not from the legend) as right now if some of the values are o it shows 0% between the other groups and it looks weird...

Data changed but PieChart was not changed.

I used FutureBuilder to mock data from sqflite then build a PieChart.
My code like this:

new FutureBuilder<List<Map<String, dynamic>>>( future: db.getGroupData(), builder: (BuildContext context, AsyncSnapshot<List<Map<String, dynamic>>> snapshot) { if(snapshot.hasData) { return pieChartCard(context, snapshot.data); } else { return new CircularProgressIndicator(); } }, ),
And render function pieChartCard:
`Widget pieChartCard(BuildContext context, List<Map<String, dynamic>> data) {
Size size = MediaQuery.of(context).size;
Map<String, double> dataMap = new Map<String, double>();

data.forEach((item) => dataMap.putIfAbsent(item['tengroup'], () => item['Total'] + 0.0));

return new Column(
    children: <Widget>[
      new FlatButton(
        onPressed: () => null,
        child: new Text(
          dataMap.length.toString(),
          style: new TextStyle(
            color: Colors.white,
            fontWeight: FontWeight.w900,
            fontSize: 25.0
          ),
        ),
      ),
      new PieChart(
        dataMap: dataMap,
        legendFontColor: Colors.white,
        legendFontSize: 14.0,
        legendFontWeight: FontWeight.w500,
        animationDuration: Duration(milliseconds: 800),
        chartLegendSpacing: 32.0,
        chartRadius: MediaQuery
            .of(context)
            .size
            .width / 2.7,
        showChartValuesInPercentage: true,
        showChartValues: true,
        chartValuesColor: Colors.blueGrey[900].withOpacity(0.9),
      )
    ],
  );

}`
When i insert a data from other Screen and then back to previous screen but pie chart was not changed. I also logged some script in render function and saw the data was changed.
My chart only change when i exit app and then open it again.
Please let me know how to fix it.
Thanks.

pie chart leaf/legend ontap method

It's convenient to have an ontap method for the piechart leaves/legends, using which users can check detailed information about that particular section. For example, let's say the pie chart is showing different categories, and when the user taps on a specific leaf or its legend, the user can go to a new page and check that category in details

How to use a Observer on it?

I need my chart as a Observable Widget but i dont know where to put the observer. I'm using Mobx to manage the state.

showChartValues is not working

Setting showChartValues to false has no effect, it still displays the chart values.

chart_issue

Steps to Reproduce

  1. Just take an example code block from the documentation, and set showChartValues to false.
  2. Then run and observe

Expected Result

Chart values should not be displayed if showChartValues is set to false

Actual Result

Chart values are still being displayed even if showChartValues set to false This option has no effect at all

Default color for empty pie chart

Would it be possible to add a feature, when passing a map with only 0 values to display as a full chart but with an default color, e.g. light grey?

Other question, when can we expect the update with the number in the middle to be officially released? I am only waiting for that feature.

Pie chart not animating with version 5.0.0 (though 4.0.1 works)

Steps to Reproduce

Important Factors

  • Pie chart draws, but doesn't have the drawing animation when pubspec.yaml has dependency of pie_chart: ^5.0.0
  • Animation works when only change is reverting dependency in pubspec.yaml back to pie_chart: ^4.0.1

To reproduce the issue, run the following application:

Application Code

main.dart

import 'package:flutter/material.dart';
import 'package:pie_chart/pie_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(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool chartvisible = false;
  void _showChart() {
    setState(() {
      chartvisible = !chartvisible;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
          child: chartvisible
              ? PieChart(
                  dataMap: {
                    'unwatched': 25.0,
                    'watched': 75.0,
                  },
                  colorList: [
                    Colors.grey,
                    Colors.green,
                  ],
                  chartValuesOptions:
                      ChartValuesOptions(showChartValues: false),
                  legendOptions: LegendOptions(
                    showLegends: false,
                    legendPosition: LegendPosition.right,
                  ),
                )
              : Container()),
      floatingActionButton: FloatingActionButton(
        onPressed: _showChart,
        child: Icon(Icons.add),
      ),
    );
  }
}

pubspec.yaml

name: piecharttest
description: A new Flutter project.

publish_to: 'none' 

version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  pie_chart: ^5.0.0


  cupertino_icons: ^1.0.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

  uses-material-design: true
Flutter Doctor Output
[โˆš] Flutter (Channel stable, 2.0.1, on Microsoft Windows [Version 10.0.19042.867], locale en-US)
    โ€ข Flutter version 2.0.1 at C:\development\flutter
    โ€ข Framework revision c5a4b4029c (8 days ago), 2021-03-04 09:47:48 -0800
    โ€ข Engine revision 40441def69
    โ€ข Dart version 2.12.0

[โˆš] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    โ€ข Android SDK at C:\development\android-sdk
    โ€ข Platform android-30, build-tools 30.0.2
    โ€ข ANDROID_SDK_ROOT = C:\development\android-sdk
    โ€ข Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    โ€ข Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    โ€ข All Android licenses accepted.

[โˆš] Chrome - develop for the web
    โ€ข Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[โˆš] Android Studio (version 4.1.0)
    โ€ข Android Studio at C:\Program Files\Android\Android Studio
    โ€ข Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    โ€ข Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    โ€ข Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[โˆš] VS Code (version 1.54.2)
    โ€ข VS Code at C:\Users\josht\AppData\Local\Programs\Microsoft VS Code
    โ€ข Flutter extension version 3.20.0

[โˆš] Connected device (2 available)
    โ€ข Chrome (web) โ€ข chrome โ€ข web-javascript โ€ข Google Chrome 88.0.4324.190
    โ€ข Edge (web)   โ€ข edge   โ€ข web-javascript โ€ข Microsoft Edge 89.0.774.50

โ€ข No issues found!

Expected Results

Pie chart animates when drawn.

Actual Results

Pie chart doesn't animate when using pie_chart 5.0.0, but does animate when using 4.0.1.

pie_chart_animating_4.0.1.mp4
pie_chart_not_animating_5.0.0.mp4

Pie chart show only half

Pie chart only show half if dataMap consists of only one value.

 dataMap.putIfAbsent(
            "Open",
                () => (snapshot.data[0].abc.data
              .toDouble()));
 PieChart(
          centerText: snapshot.data[0].totalNo.toString(),
         dataMap: dataMap,
         animationDuration: Duration(milliseconds: 800),
         chartRadius: 200,
         showChartValuesInPercentage: true,
         showChartValues: true,
        showChartValuesOutside: true,
         chartValueBackgroundColor: Colors.grey[200],
         colorList: colorList,
        showLegends: true,
        chartType: ChartType.ring,
    )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.