syncfusion-flutter-funnel-charts
Syncfusion Flutter Funnel Chart
This skill covers the Syncfusion Flutter SfFunnelChart widget for visualizing data in a funnel shape, typically used to represent stages in a process where values progressively decrease.
When to Use This Skill
Use this skill when you need to:
- Visualize conversion funnels showing stages in a sales or marketing process
- Display hierarchical data with progressively decreasing values
- Track process stages in workflows, pipelines, or sequential processes
- Analyze conversion rates across different stages (leads, prospects, customers)
- Show sales pipelines with deal progression through various stages
- Visualize filtering processes where data is reduced at each step
- Display recruitment funnels showing candidate progression through hiring stages
- Create marketing analytics showing user journey from awareness to conversion
- Represent process efficiency with data reduction at each stage
- Build analytics dashboards with funnel visualization for business metrics
Key Features
- Funnel visualization with neck and body segments
- Interactive selection with single and multi-selection support
- Rich tooltips with customizable appearance and activation modes
- Data labels with flexible positioning (inside/outside) and styling
- Legend support with customization and toggling capabilities
- Exploded segments for emphasis on specific data points
- Gap between segments for clear visual separation
- Animation support with customizable duration and delay
- Palette colors for automatic color application
- Export capabilities to PNG images and PDF documents
- RTL support for right-to-left languages
- Accessibility features with semantic labels and screen reader support
- Responsive sizing with configurable width and height
- Empty point handling with multiple modes
- Color mapping for data-driven colors
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- Installation and package setup
- Basic SfFunnelChart implementation
- Adding data source and binding
- First chart creation
- Package dependencies and imports
- Quick start code examples
Component Overview
📄 Read: references/overview.md
- SfFunnelChart widget overview and features
- When to use funnel charts vs other chart types
- Key features and capabilities
- Common use cases and scenarios
- Component architecture
Funnel Customization
📄 Read: references/funnel-customization.md
- Funnel size configuration (height and width)
- Neck size customization (neckHeight and neckWidth)
- Gap between segments (gapRatio)
- Exploding segments (explode, explodeIndex, explodeOffset)
- Segment borders and opacity
- Palette colors application
- Visual appearance customization
Series Customization
📄 Read: references/series-customization.md
- Animation settings (duration and delay)
- Empty point handling (gap, zero, drop, average modes)
- Empty point customization (color, border)
- Color mapping for data points (pointColorMapper)
- Series-level styling options
Data Labels
📄 Read: references/datalabel.md
- Enabling and positioning data labels
- Label alignment options (outer, auto, top, bottom, middle)
- Label position (inside/outside)
- Styling data labels (color, font, borders)
- Using series colors for labels
- Hiding labels for zero values
- Overflow mode handling
- Data label templates with builder
Legend
📄 Read: references/legend.md
- Enabling legend (isVisible)
- Customizing legend appearance
- Legend title configuration
- Legend positioning (top, bottom, left, right, auto)
- Legend overflow modes (scroll, wrap)
- Toggling series visibility
- Floating legend with offset
- Legend item templates with builder
Tooltip
📄 Read: references/tooltip.md
- Enabling tooltips (TooltipBehavior)
- Customizing tooltip appearance (colors, borders, elevation)
- Tooltip formatting and templates
- Tooltip positioning (auto, pointer)
- Activation modes (tap, double tap, long press)
- Tooltip duration and animation
- Custom tooltip builders
Selection
📄 Read: references/selection.md
- Enabling selection (SelectionBehavior)
- Single and multi-selection
- Customizing selected segments (colors, borders, opacity)
- Customizing unselected segments
- Initial selection on rendering
- Toggle selection behavior
- Programmatic selection with methods
Chart Title and Appearance
📄 Read: references/chart-title.md
- Adding and styling chart title
- Title alignment (near, center, far)
- Title background and borders
- Title text styling
📄 Read: references/chart-appearance.md
- Chart sizing (width/height)
- Chart margin configuration
- Background color and image
- Border customization
Callbacks and Events
📄 Read: references/callbacks.md
- onLegendItemRender - Customize legend items
- onTooltipRender - Customize tooltip content
- onDataLabelRender - Customize data labels
- onLegendTapped - Handle legend taps
- onSelectionChanged - Handle selection events
- onDataLabelTapped - Handle data label taps
- onPointTap - Handle segment taps
- onPointDoubleTap - Handle double taps
- onPointLongPress - Handle long press
- onChartTouchInteractionUp/Down/Move - Touch interactions
- onRendererCreated - Access series controller
Common Patterns and Best Practices
📄 Read: references/common-patterns.md
- Sales pipeline funnel pattern
- Marketing conversion with colors
- Exploded segment emphasis
- Custom neck sizing techniques
- Dynamic updates with controller
- Pattern combination examples
- Pattern selection guide
Advanced Features
📄 Read: references/methods.md
- FunnelSeriesController methods
- pixelToPoint conversion
- Dynamic data updates
- Programmatic control
📄 Read: references/export-funnel-chart.md
- Export chart as PNG image
- Export chart as PDF document
- Image quality and pixel ratio
- PDF document creation
Localization and Accessibility
📄 Read: references/accessibility.md
- Screen reader support
- Color contrast requirements
- Large font support
- Touch target sizing
- Accessible interactions
📄 Read: references/right-to-left.md
- RTL support for Arabic, Hebrew, etc.
- Directionality widget usage
- RTL locale configuration
- Legend and tooltip RTL behavior
Quick Start Examples
Basic Funnel Chart
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class BasicFunnelChart extends StatelessWidget {
Widget build(BuildContext context) {
final List<ChartData> chartData = [
ChartData('Prospects', 500),
ChartData('Qualified', 350),
ChartData('Contacted', 250),
ChartData('Negotiating', 150),
ChartData('Won', 100)
];
return Scaffold(
appBar: AppBar(title: Text('Sales Funnel')),
body: Center(
child: SfFunnelChart(
title: ChartTitle(text: 'Sales Pipeline Analysis'),
legend: Legend(isVisible: true),
series: FunnelSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.stage,
yValueMapper: (ChartData data, _) => data.value,
dataLabelSettings: DataLabelSettings(isVisible: true)
)
)
)
);
}
}
class ChartData {
ChartData(this.stage, this.value);
final String stage;
final double value;
}
Funnel Chart with Customization
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class CustomFunnelChart extends StatelessWidget {
Widget build(BuildContext context) {
final List<ChartData> chartData = [
ChartData('Awareness', 1000, Colors.blue),
ChartData('Interest', 750, Colors.green),
ChartData('Consideration', 500, Colors.orange),
ChartData('Intent', 300, Colors.purple),
ChartData('Purchase', 150, Colors.red)
];
return Scaffold(
appBar: AppBar(title: Text('Marketing Funnel')),
body: Center(
child: SfFunnelChart(
title: ChartTitle(
text: 'Customer Journey Analysis',
textStyle: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)
),
legend: Legend(
isVisible: true,
position: LegendPosition.bottom
),
tooltipBehavior: TooltipBehavior(enable: true),
series: FunnelSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.stage,
yValueMapper: (ChartData data, _) => data.value,
pointColorMapper: (ChartData data, _) => data.color,
// Customize funnel appearance
height: '80%',
width: '80%',
neckHeight: '20%',
neckWidth: '15%',
gapRatio: 0.1,
explode: true,
explodeIndex: 4,
explodeOffset: '10%',
dataLabelSettings: DataLabelSettings(
isVisible: true,
labelPosition: ChartDataLabelPosition.inside,
textStyle: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold
)
)
)
)
)
);
}
}
class ChartData {
ChartData(this.stage, this.value, this.color);
final String stage;
final double value;
final Color color;
}
Funnel Chart with Tooltip and Selection
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class InteractiveFunnelChart extends StatefulWidget {
_InteractiveFunnelChartState createState() => _InteractiveFunnelChartState();
}
class _InteractiveFunnelChartState extends State<InteractiveFunnelChart> {
late TooltipBehavior _tooltipBehavior;
late SelectionBehavior _selectionBehavior;
void initState() {
_tooltipBehavior = TooltipBehavior(
enable: true,
format: 'point.x: point.y leads',
color: Colors.black87,
textStyle: TextStyle(color: Colors.white)
);
_selectionBehavior = SelectionBehavior(
enable: true,
selectedColor: Colors.deepOrange,
unselectedColor: Colors.grey[300]
);
super.initState();
}
Widget build(BuildContext context) {
final List<ChartData> chartData = [
ChartData('Visitors', 5000),
ChartData('Sign-ups', 3500),
ChartData('Active Users', 2000),
ChartData('Premium Users', 800),
ChartData('Renewals', 500)
];
return Scaffold(
appBar: AppBar(title: Text('Subscription Funnel')),
body: Center(
child: SfFunnelChart(
title: ChartTitle(text: 'User Conversion Funnel'),
legend: Legend(isVisible: true),
tooltipBehavior: _tooltipBehavior,
series: FunnelSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.stage,
yValueMapper: (ChartData data, _) => data.count,
selectionBehavior: _selectionBehavior,
dataLabelSettings: DataLabelSettings(
isVisible: true,
labelPosition: ChartDataLabelPosition.outside
)
)
)
)
);
}
}
class ChartData {
ChartData(this.stage, this.count);
final String stage;
final double count;
}
Common Patterns
📄 Read: references/common-patterns.md for detailed implementation patterns
Quick Pattern Overview
- Sales Pipeline Funnel - Basic funnel for sales stages with clear progression
- Marketing Conversion with Colors - Color-coded stages with visual hierarchy
- Exploded Segment Emphasis - Highlight critical stages with exploded segments
- Custom Neck Sizing - Adjust neck dimensions for different visual effects
- Dynamic Updates - Real-time data updates using FunnelSeriesController
Each pattern includes complete code examples, when to use them, and best practices. See the common patterns reference for full implementations.
Key Properties
SfFunnelChart Essential Properties
series- FunnelSeries configuration with data sourcetitle- Chart title (ChartTitle)legend- Legend configuration (Legend)tooltipBehavior- Tooltip settings (TooltipBehavior)palette- Color palette for seriesbackgroundColor- Chart background colorbackgroundImage- Background imageborderColor- Chart border colorborderWidth- Chart border widthmargin- Chart margin (EdgeInsets)enableMultiSelection- Enable multiple segment selectiononSelectionChanged- Selection change callbackonLegendItemRender- Legend item render callbackonTooltipRender- Tooltip render callbackonDataLabelRender- Data label render callbackonLegendTapped- Legend tap callbackonDataLabelTapped- Data label tap callbackonChartTouchInteractionUp/Down/Move- Touch interaction callbacks
FunnelSeries Essential Properties
dataSource- Data source listxValueMapper- Maps x-axis values from datayValueMapper- Maps y-axis values from datapointColorMapper- Maps colors from dataname- Series name for legendheight- Funnel height as percentage (e.g., '80%')width- Funnel width as percentage (e.g., '80%')neckHeight- Neck height as percentage (e.g., '20%')neckWidth- Neck width as percentage (e.g., '15%')gapRatio- Gap between segments (0 to 1)explode- Enable exploding segmentsexplodeIndex- Index of segment to explodeexplodeOffset- Explode distance as percentageopacity- Series opacity (0 to 1)borderWidth- Segment border widthborderColor- Segment border colordataLabelSettings- Data label configurationselectionBehavior- Selection behavior settingsenableTooltip- Enable tooltip for seriesanimationDuration- Animation duration in millisecondsanimationDelay- Animation delay in millisecondsemptyPointSettings- Empty point handlinginitialSelectedDataIndexes- Initial selection indicesonPointTap- Point tap callbackonPointDoubleTap- Point double tap callbackonPointLongPress- Point long press callbackonRendererCreated- Renderer created callback
DataLabelSettings Properties
isVisible- Show/hide data labelslabelPosition- Position (inside/outside)labelAlignment- Alignment (outer, auto, top, bottom, middle)textStyle- Text stylingcolor- Label background colorborderColor- Label border colorborderWidth- Label border widthborderRadius- Label corner radiusmargin- Label marginopacity- Label opacityangle- Label rotation angleuseSeriesColor- Use series color for label backgroundshowZeroValue- Show labels for zero valuesoverflowMode- Overflow handling (none, trim, hide, shift)
Legend Properties
isVisible- Show/hide legendposition- Position (auto, top, bottom, left, right)orientation- Orientation (auto, horizontal, vertical)title- Legend title (LegendTitle)overflowMode- Overflow mode (scroll, wrap)toggleSeriesVisibility- Enable toggling series visibilitybackgroundColor- Legend background colorborderColor- Legend border colorborderWidth- Legend border widthopacity- Legend opacitypadding- Legend paddingiconHeight- Legend icon heighticonWidth- Legend icon widthoffset- Floating legend offset
TooltipBehavior Properties
enable- Enable tooltipcolor- Tooltip background colorborderColor- Tooltip border colorborderWidth- Tooltip border widthopacity- Tooltip opacityduration- Display duration in millisecondsanimationDuration- Animation durationelevation- Tooltip elevation/shadowformat- Tooltip text formatheader- Tooltip header texttooltipPosition- Position (auto, pointer)activationMode- Activation mode (tap, doubleTap, longPress, none)builder- Custom tooltip builder
SelectionBehavior Properties
enable- Enable selectionselectedColor- Selected segment colorunselectedColor- Unselected segment colorselectedBorderColor- Selected segment border colorselectedBorderWidth- Selected segment border widthunselectedBorderColor- Unselected segment border colorunselectedBorderWidth- Unselected segment border widthselectedOpacity- Selected segment opacityunselectedOpacity- Unselected segment opacitytoggleSelection- Enable toggle selection
Common Use Cases
- Sales Pipeline - Track deals through sales stages (leads → closed won)
- Marketing Funnel - Visualize customer journey (awareness → purchase)
- Conversion Analysis - Show user conversion rates across process stages
- Recruitment Process - Display candidate progression through hiring stages
- E-commerce Funnel - Track shopping cart abandonment and checkout flow
- Lead Management - Monitor lead qualification and conversion process
- Subscription Funnel - Analyze user onboarding and subscription flow
- Web Analytics - Display visitor engagement and conversion metrics
- Process Efficiency - Visualize workflow bottlenecks and drop-off points
- Customer Journey - Map customer touchpoints from awareness to loyalty
More from syncfusion/flutter-ui-components-skills
syncfusion-flutter-calendar-datepicker
Implements Syncfusion Flutter Calendar (SfCalendar) and Date Range Picker (SfDateRangePicker) widgets for date and scheduling UIs in Flutter apps. Use when building appointment calendars, booking systems, date range selectors, or event scheduling interfaces. This skill covers calendar views, recurring events, date navigation, localization, callbacks, and customization.
29syncfusion-flutter-circular-charts
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.
27syncfusion-flutter-cartesian-charts
Implements Syncfusion Flutter Cartesian Charts (SfCartesianChart) for a wide range of 2D chart types in Flutter apps. Use when working with line, column, bar, area, spline, scatter, bubble, financial, stacked, or histogram charts. This skill covers axis types (NumericAxis, CategoryAxis, DateTimeAxis), zoom and pan, tooltip, trackball, legend, annotations, technical indicators, trendlines, and chart export.
27syncfusion-flutter-sliders
Implements Syncfusion Flutter Slider controls (SfSlider, SfRangeSlider, SfRangeSelector) for numeric value selection and range inputs. Use when working with single-value sliders, range selection, or chart-range controllers in Flutter apps. This skill covers thumb and tooltip customization, ticks, dividers, RTL support, drag modes, and chart integrations.
26syncfusion-flutter-maps
Implements Syncfusion Flutter Maps (SfMaps) for interactive geographical data visualization in Flutter apps. Use when working with shape layers, tile layers, choropleth maps, or map markers and overlays. This skill covers GeoJSON rendering, OpenStreetMap/Bing Maps integration, bubbles, legends, tooltips, zoom and pan, and spatial data visualization.
25syncfusion-flutter-pyramid-charts
Implements Syncfusion Flutter Pyramid Charts (SfPyramidChart, PyramidSeries) for proportional and hierarchical data visualization. Use when working with pyramid charts, funnel-style visualizations, or segment-based data comparisons in Flutter. This skill covers series configuration, segment exploding, gap ratio, PyramidMode, data labels, legends, and tooltip customization.
25