Implementing Syncfusion Flutter Circular Charts
SfCircularChart is Syncfusion's high-performance Flutter widget for rendering pie, doughnut, and radial bar charts. It supports rich interactivity (tooltips, selection, explode), beautiful customization (gradients, animations, data labels), and accessibility out of the box.
When to Use This Skill
- User wants a pie chart to show part-to-whole proportions
- User wants a doughnut chart — ring-style chart, optionally with center content
- User wants a radial bar chart for comparing categories in circular arcs
- Any
SfCircularChart, PieSeries, DoughnutSeries, or RadialBarSeries question
- Customizing segment colors, explode behavior, grouping small slices
- Adding data labels inside/outside slices with connector lines
- Configuring legend, tooltip, selection, annotations
- Exporting the chart as PNG or PDF
- Handling accessibility or RTL layouts
Component Overview
The SfCircularChart widget is a high-performance charting solution for displaying proportional data in circular formats. It supports three primary series types:
PieSeries: Traditional pie chart showing data as segments of a circle. Supports exploding segments, semi-circle rendering, grouping small slices, per-point radius customization, and various interaction modes.
DoughnutSeries: Ring-shaped chart with customizable inner radius. Ideal for displaying data with center annotations, supports rounded corners, center elevation effects, and all pie chart features.
RadialBarSeries: Circular progress-style chart with customizable tracks. Features include maximum value configuration, corner styles (flat/rounded), track opacity and color customization, and data labels along the arc.
All series types support rich interactivity (tooltips, selection, tap gestures), comprehensive data label positioning (inside/outside with connector lines), legend configuration, animations with customizable duration and delay, gradient fills (linear/sweep/radial), image shaders, empty point handling, data sorting, and chart export to PNG/PDF formats. The widget provides accessibility features, RTL support, and extensive customization through color mapping, point-specific colors, and annotations.
Quick Start
import 'package:syncfusion_flutter_charts/charts.dart';
class MyChart extends StatelessWidget {
@override
Widget build(BuildContext context) {
final List<ChartData> data = [
ChartData('Jan', 35),
ChartData('Feb', 28),
ChartData('Mar', 34),
ChartData('Apr', 32),
ChartData('May', 40),
];
return SfCircularChart(
title: ChartTitle(text: 'Monthly Sales'),
legend: Legend(isVisible: true),
tooltipBehavior: TooltipBehavior(enable: true),
series: <CircularSeries>[
PieSeries<ChartData, String>(
dataSource: data,
xValueMapper: (ChartData d, _) => d.x,
yValueMapper: (ChartData d, _) => d.y,
dataLabelSettings: DataLabelSettings(isVisible: true),
enableTooltip: true,
),
],
);
}
}
class ChartData {
ChartData(this.x, this.y);
final String x;
final double y;
}
Common Patterns
Doughnut with center annotation
SfCircularChart(
annotations: <CircularChartAnnotation>[
CircularChartAnnotation(
widget: Text('62%', style: TextStyle(fontSize: 25)),
),
],
series: <CircularSeries>[
DoughnutSeries<ChartData, String>(
dataSource: data,
xValueMapper: (d, _) => d.x,
yValueMapper: (d, _) => d.y,
innerRadius: '60%',
),
],
)
Radial bar with track and rounded corners
RadialBarSeries<ChartData, String>(
dataSource: data,
xValueMapper: (d, _) => d.x,
yValueMapper: (d, _) => d.y,
maximumValue: 100,
cornerStyle: CornerStyle.bothCurve,
useSeriesColor: true,
trackOpacity: 0.3,
)
Pie with exploded segment on tap
PieSeries<ChartData, String>(
dataSource: data,
xValueMapper: (d, _) => d.x,
yValueMapper: (d, _) => d.y,
explode: true,
explodeIndex: 0,
explodeGesture: ActivationMode.singleTap,
)
Key Properties
| Prop |
Where |
Purpose |
series |
SfCircularChart |
List of CircularSeries (Pie/Doughnut/RadialBar) |
xValueMapper |
Series |
Category label per data point |
yValueMapper |
Series |
Numeric value per data point |
dataLabelSettings |
Series |
Show/style data labels |
legend |
SfCircularChart |
Show legend |
tooltipBehavior |
SfCircularChart |
Configure tooltip |
annotations |
SfCircularChart |
Overlay widgets on chart |
radius |
Series |
Outer size as '80%' (default) |
innerRadius |
Doughnut/RadialBar |
Inner hole size |
explode |
Pie/Doughnut |
Enable segment pop-out on tap |
maximumValue |
RadialBarSeries |
Full-arc reference value |
palette |
SfCircularChart |
Chart-level color list |
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- Package installation and pubspec setup
- Import statement and initialization
- Binding data source with
PieSeries
- Adding title, data labels, legend, tooltip
- Complete runnable minimal example
Chart Types (Pie, Doughnut, Radial Bar)
📄 Read: references/chart-types.md
PieSeries — radius, explode, angle (semi-pie), grouping small slices, per-slice radius
DoughnutSeries — inner radius, rounded corners, center elevation, angle, grouping
RadialBarSeries — inner radius, track customization, maximumValue, overfilled bar, data labels
Series Customization
📄 Read: references/series-customization.md
- Animation duration and delay
- Color palette and per-point color mapping
- Gradient fill (linear, sweep, radial)
- Image shader fill
- Per-point shader mapping
- Point render mode (solid vs sweep gradient)
- Empty/null data point handling
- Sorting data points
Data Labels
📄 Read: references/data-labels.md
- Enable and style data labels
- Positioning (inside vs outside)
- Smart label layout (avoid overlap)
- Connector lines for outside labels
- Custom label text (dataLabelMapper)
- Label templates (builder)
- Zero-value label suppression
Legend and Title
📄 Read: references/legend-and-title.md
- Enable and customize legend appearance
- Legend title, positioning, and orientation
- Overflow handling (wrap/scroll)
- Floating legend with custom offset
- Legend item templates
- Chart title and text styling
Tooltip and Selection
📄 Read: references/tooltip-and-selection.md
- Enable and configure
TooltipBehavior
- Tooltip format, positioning, templates
- Activation modes (singleTap, longPress, doubleTap)
- Segment selection with
SelectionBehavior
- Customizing selected/unselected segment appearance
- Multi-selection
Annotations and Appearance
📄 Read: references/annotations-and-appearance.md
- Placing widgets inside the chart (
CircularChartAnnotation)
- Positioning annotations by radius and alignment
- Watermark pattern
- Chart sizing, margin, background color and image
Accessibility and Export
📄 Read: references/accessibility-and-export.md
- Accessibility (contrast, large fonts, tappable targets)
- RTL (right-to-left) layout support
- Export chart as PNG image (
toImage)
- Export chart as PDF (
syncfusion_flutter_pdf)
1---2name: syncfusion-flutter-circular-charts3description: Implements Syncfusion Flutter Circular Charts (SfCircularChart) for pie, doughnut, and radial bar data visualizations in Flutter. Use when working with PieSeries, DoughnutSeries, or RadialBarSeries using the syncfusion_flutter_charts package. This skill covers chart setup, data labels, legends, tooltips, selection, annotations, gradients, animation, accessibility, and chart export.4---56# Implementing Syncfusion Flutter Circular Charts78`SfCircularChart` is Syncfusion's high-performance Flutter widget for rendering pie, doughnut, and radial bar charts. It supports rich interactivity (tooltips, selection, explode), beautiful customization (gradients, animations, data labels), and accessibility out of the box.910## When to Use This Skill1112- User wants a **pie chart** to show part-to-whole proportions13- User wants a **doughnut chart** — ring-style chart, optionally with center content14- User wants a **radial bar chart** for comparing categories in circular arcs15- Any `SfCircularChart`, `PieSeries`, `DoughnutSeries`, or `RadialBarSeries` question16- Customizing segment colors, explode behavior, grouping small slices17- Adding data labels inside/outside slices with connector lines18- Configuring legend, tooltip, selection, annotations19- Exporting the chart as PNG or PDF20- Handling accessibility or RTL layouts2122## Component Overview2324The **SfCircularChart** widget is a high-performance charting solution for displaying proportional data in circular formats. It supports three primary series types:2526- **PieSeries**: Traditional pie chart showing data as segments of a circle. Supports exploding segments, semi-circle rendering, grouping small slices, per-point radius customization, and various interaction modes.2728- **DoughnutSeries**: Ring-shaped chart with customizable inner radius. Ideal for displaying data with center annotations, supports rounded corners, center elevation effects, and all pie chart features.2930- **RadialBarSeries**: Circular progress-style chart with customizable tracks. Features include maximum value configuration, corner styles (flat/rounded), track opacity and color customization, and data labels along the arc.3132All series types support rich interactivity (tooltips, selection, tap gestures), comprehensive data label positioning (inside/outside with connector lines), legend configuration, animations with customizable duration and delay, gradient fills (linear/sweep/radial), image shaders, empty point handling, data sorting, and chart export to PNG/PDF formats. The widget provides accessibility features, RTL support, and extensive customization through color mapping, point-specific colors, and annotations.3334## Quick Start3536```dart37import 'package:syncfusion_flutter_charts/charts.dart';3839class MyChart extends StatelessWidget {40 @override41 Widget build(BuildContext context) {42 final List<ChartData> data = [43 ChartData('Jan', 35),44 ChartData('Feb', 28),45 ChartData('Mar', 34),46 ChartData('Apr', 32),47 ChartData('May', 40),48 ];4950 return SfCircularChart(51 title: ChartTitle(text: 'Monthly Sales'),52 legend: Legend(isVisible: true),53 tooltipBehavior: TooltipBehavior(enable: true),54 series: <CircularSeries>[55 PieSeries<ChartData, String>(56 dataSource: data,57 xValueMapper: (ChartData d, _) => d.x,58 yValueMapper: (ChartData d, _) => d.y,59 dataLabelSettings: DataLabelSettings(isVisible: true),60 enableTooltip: true,61 ),62 ],63 );64 }65}6667class ChartData {68 ChartData(this.x, this.y);69 final String x;70 final double y;71}72```7374## Common Patterns7576### Doughnut with center annotation77```dart78SfCircularChart(79 annotations: <CircularChartAnnotation>[80 CircularChartAnnotation(81 widget: Text('62%', style: TextStyle(fontSize: 25)),82 ),83 ],84 series: <CircularSeries>[85 DoughnutSeries<ChartData, String>(86 dataSource: data,87 xValueMapper: (d, _) => d.x,88 yValueMapper: (d, _) => d.y,89 innerRadius: '60%',90 ),91 ],92)93```9495### Radial bar with track and rounded corners96```dart97RadialBarSeries<ChartData, String>(98 dataSource: data,99 xValueMapper: (d, _) => d.x,100 yValueMapper: (d, _) => d.y,101 maximumValue: 100,102 cornerStyle: CornerStyle.bothCurve,103 useSeriesColor: true,104 trackOpacity: 0.3,105)106```107108### Pie with exploded segment on tap109```dart110PieSeries<ChartData, String>(111 dataSource: data,112 xValueMapper: (d, _) => d.x,113 yValueMapper: (d, _) => d.y,114 explode: true,115 explodeIndex: 0,116 explodeGesture: ActivationMode.singleTap,117)118```119120## Key Properties121122| Prop | Where | Purpose |123|---|---|---|124| `series` | `SfCircularChart` | List of `CircularSeries` (Pie/Doughnut/RadialBar) |125| `xValueMapper` | Series | Category label per data point |126| `yValueMapper` | Series | Numeric value per data point |127| `dataLabelSettings` | Series | Show/style data labels |128| `legend` | `SfCircularChart` | Show legend |129| `tooltipBehavior` | `SfCircularChart` | Configure tooltip |130| `annotations` | `SfCircularChart` | Overlay widgets on chart |131| `radius` | Series | Outer size as `'80%'` (default) |132| `innerRadius` | Doughnut/RadialBar | Inner hole size |133| `explode` | Pie/Doughnut | Enable segment pop-out on tap |134| `maximumValue` | RadialBarSeries | Full-arc reference value |135| `palette` | `SfCircularChart` | Chart-level color list |136137## Documentation and Navigation Guide138139### Getting Started140📄 **Read:** [references/getting-started.md](references/getting-started.md)141- Package installation and pubspec setup142- Import statement and initialization143- Binding data source with `PieSeries`144- Adding title, data labels, legend, tooltip145- Complete runnable minimal example146147### Chart Types (Pie, Doughnut, Radial Bar)148📄 **Read:** [references/chart-types.md](references/chart-types.md)149- `PieSeries` — radius, explode, angle (semi-pie), grouping small slices, per-slice radius150- `DoughnutSeries` — inner radius, rounded corners, center elevation, angle, grouping151- `RadialBarSeries` — inner radius, track customization, maximumValue, overfilled bar, data labels152153### Series Customization154📄 **Read:** [references/series-customization.md](references/series-customization.md)155- Animation duration and delay156- Color palette and per-point color mapping157- Gradient fill (linear, sweep, radial)158- Image shader fill159- Per-point shader mapping160- Point render mode (solid vs sweep gradient)161- Empty/null data point handling162- Sorting data points163164### Data Labels165📄 **Read:** [references/data-labels.md](references/data-labels.md)166- Enable and style data labels167- Positioning (inside vs outside)168- Smart label layout (avoid overlap)169- Connector lines for outside labels170- Custom label text (dataLabelMapper)171- Label templates (builder)172- Zero-value label suppression173174### Legend and Title175📄 **Read:** [references/legend-and-title.md](references/legend-and-title.md)176- Enable and customize legend appearance177- Legend title, positioning, and orientation178- Overflow handling (wrap/scroll)179- Floating legend with custom offset180- Legend item templates181- Chart title and text styling182183### Tooltip and Selection184📄 **Read:** [references/tooltip-and-selection.md](references/tooltip-and-selection.md)185- Enable and configure `TooltipBehavior`186- Tooltip format, positioning, templates187- Activation modes (singleTap, longPress, doubleTap)188- Segment selection with `SelectionBehavior`189- Customizing selected/unselected segment appearance190- Multi-selection191192### Annotations and Appearance193📄 **Read:** [references/annotations-and-appearance.md](references/annotations-and-appearance.md)194- Placing widgets inside the chart (`CircularChartAnnotation`)195- Positioning annotations by radius and alignment196- Watermark pattern197- Chart sizing, margin, background color and image198199### Accessibility and Export200📄 **Read:** [references/accessibility-and-export.md](references/accessibility-and-export.md)201- Accessibility (contrast, large fonts, tappable targets)202- RTL (right-to-left) layout support203- Export chart as PNG image (`toImage`)204- Export chart as PDF (`syncfusion_flutter_pdf`)