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 {
@override
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 {
@override
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 {
@override
_InteractiveFunnelChartState createState() => _InteractiveFunnelChartState();
}
class _InteractiveFunnelChartState extends State<InteractiveFunnelChart> {
late TooltipBehavior _tooltipBehavior;
late SelectionBehavior _selectionBehavior;
@override
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();
}
@override
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 source
title - Chart title (ChartTitle)
legend - Legend configuration (Legend)
tooltipBehavior - Tooltip settings (TooltipBehavior)
palette - Color palette for series
backgroundColor - Chart background color
backgroundImage - Background image
borderColor - Chart border color
borderWidth - Chart border width
margin - Chart margin (EdgeInsets)
enableMultiSelection - Enable multiple segment selection
onSelectionChanged - Selection change callback
onLegendItemRender - Legend item render callback
onTooltipRender - Tooltip render callback
onDataLabelRender - Data label render callback
onLegendTapped - Legend tap callback
onDataLabelTapped - Data label tap callback
onChartTouchInteractionUp/Down/Move - Touch interaction callbacks
FunnelSeries Essential Properties
dataSource - Data source list
xValueMapper - Maps x-axis values from data
yValueMapper - Maps y-axis values from data
pointColorMapper - Maps colors from data
name - Series name for legend
height - 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 segments
explodeIndex - Index of segment to explode
explodeOffset - Explode distance as percentage
opacity - Series opacity (0 to 1)
borderWidth - Segment border width
borderColor - Segment border color
dataLabelSettings - Data label configuration
selectionBehavior - Selection behavior settings
enableTooltip - Enable tooltip for series
animationDuration - Animation duration in milliseconds
animationDelay - Animation delay in milliseconds
emptyPointSettings - Empty point handling
initialSelectedDataIndexes - Initial selection indices
onPointTap - Point tap callback
onPointDoubleTap - Point double tap callback
onPointLongPress - Point long press callback
onRendererCreated - Renderer created callback
DataLabelSettings Properties
isVisible - Show/hide data labels
labelPosition - Position (inside/outside)
labelAlignment - Alignment (outer, auto, top, bottom, middle)
textStyle - Text styling
color - Label background color
borderColor - Label border color
borderWidth - Label border width
borderRadius - Label corner radius
margin - Label margin
opacity - Label opacity
angle - Label rotation angle
useSeriesColor - Use series color for label background
showZeroValue - Show labels for zero values
overflowMode - Overflow handling (none, trim, hide, shift)
Legend Properties
isVisible - Show/hide legend
position - Position (auto, top, bottom, left, right)
orientation - Orientation (auto, horizontal, vertical)
title - Legend title (LegendTitle)
overflowMode - Overflow mode (scroll, wrap)
toggleSeriesVisibility - Enable toggling series visibility
backgroundColor - Legend background color
borderColor - Legend border color
borderWidth - Legend border width
opacity - Legend opacity
padding - Legend padding
iconHeight - Legend icon height
iconWidth - Legend icon width
offset - Floating legend offset
TooltipBehavior Properties
enable - Enable tooltip
color - Tooltip background color
borderColor - Tooltip border color
borderWidth - Tooltip border width
opacity - Tooltip opacity
duration - Display duration in milliseconds
animationDuration - Animation duration
elevation - Tooltip elevation/shadow
format - Tooltip text format
header - Tooltip header text
tooltipPosition - Position (auto, pointer)
activationMode - Activation mode (tap, doubleTap, longPress, none)
builder - Custom tooltip builder
SelectionBehavior Properties
enable - Enable selection
selectedColor - Selected segment color
unselectedColor - Unselected segment color
selectedBorderColor - Selected segment border color
selectedBorderWidth - Selected segment border width
unselectedBorderColor - Unselected segment border color
unselectedBorderWidth - Unselected segment border width
selectedOpacity - Selected segment opacity
unselectedOpacity - Unselected segment opacity
toggleSelection - 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
1---2name: syncfusion-flutter-funnel-charts3description: Implements Syncfusion Flutter Funnel Chart (SfFunnelChart) for proportional and stage-based data visualization in Flutter apps. Use when working with conversion funnels, sales pipelines, or process-stage visualizations. This skill covers series configuration, segment exploding, gap ratio, data labels, legends, tooltips, and customization.4---56# Syncfusion Flutter Funnel Chart78This 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.910## When to Use This Skill1112Use this skill when you need to:1314- **Visualize conversion funnels** showing stages in a sales or marketing process15- **Display hierarchical data** with progressively decreasing values16- **Track process stages** in workflows, pipelines, or sequential processes17- **Analyze conversion rates** across different stages (leads, prospects, customers)18- **Show sales pipelines** with deal progression through various stages19- **Visualize filtering processes** where data is reduced at each step20- **Display recruitment funnels** showing candidate progression through hiring stages21- **Create marketing analytics** showing user journey from awareness to conversion22- **Represent process efficiency** with data reduction at each stage23- **Build analytics dashboards** with funnel visualization for business metrics2425## Key Features2627- **Funnel visualization** with neck and body segments28- **Interactive selection** with single and multi-selection support29- **Rich tooltips** with customizable appearance and activation modes30- **Data labels** with flexible positioning (inside/outside) and styling31- **Legend support** with customization and toggling capabilities32- **Exploded segments** for emphasis on specific data points33- **Gap between segments** for clear visual separation34- **Animation support** with customizable duration and delay35- **Palette colors** for automatic color application36- **Export capabilities** to PNG images and PDF documents37- **RTL support** for right-to-left languages38- **Accessibility features** with semantic labels and screen reader support39- **Responsive sizing** with configurable width and height40- **Empty point handling** with multiple modes41- **Color mapping** for data-driven colors4243## Documentation and Navigation Guide4445### Getting Started4647📄 **Read:** [references/getting-started.md](references/getting-started.md)48- Installation and package setup49- Basic SfFunnelChart implementation50- Adding data source and binding51- First chart creation52- Package dependencies and imports53- Quick start code examples5455### Component Overview5657📄 **Read:** [references/overview.md](references/overview.md)58- SfFunnelChart widget overview and features59- When to use funnel charts vs other chart types60- Key features and capabilities61- Common use cases and scenarios62- Component architecture6364### Funnel Customization6566📄 **Read:** [references/funnel-customization.md](references/funnel-customization.md)67- Funnel size configuration (height and width)68- Neck size customization (neckHeight and neckWidth)69- Gap between segments (gapRatio)70- Exploding segments (explode, explodeIndex, explodeOffset)71- Segment borders and opacity72- Palette colors application73- Visual appearance customization7475### Series Customization7677📄 **Read:** [references/series-customization.md](references/series-customization.md)78- Animation settings (duration and delay)79- Empty point handling (gap, zero, drop, average modes)80- Empty point customization (color, border)81- Color mapping for data points (pointColorMapper)82- Series-level styling options8384### Data Labels8586📄 **Read:** [references/datalabel.md](references/datalabel.md)87- Enabling and positioning data labels88- Label alignment options (outer, auto, top, bottom, middle)89- Label position (inside/outside)90- Styling data labels (color, font, borders)91- Using series colors for labels92- Hiding labels for zero values93- Overflow mode handling94- Data label templates with builder9596### Legend9798📄 **Read:** [references/legend.md](references/legend.md)99- Enabling legend (isVisible)100- Customizing legend appearance101- Legend title configuration102- Legend positioning (top, bottom, left, right, auto)103- Legend overflow modes (scroll, wrap)104- Toggling series visibility105- Floating legend with offset106- Legend item templates with builder107108### Tooltip109110📄 **Read:** [references/tooltip.md](references/tooltip.md)111- Enabling tooltips (TooltipBehavior)112- Customizing tooltip appearance (colors, borders, elevation)113- Tooltip formatting and templates114- Tooltip positioning (auto, pointer)115- Activation modes (tap, double tap, long press)116- Tooltip duration and animation117- Custom tooltip builders118119### Selection120121📄 **Read:** [references/selection.md](references/selection.md)122- Enabling selection (SelectionBehavior)123- Single and multi-selection124- Customizing selected segments (colors, borders, opacity)125- Customizing unselected segments126- Initial selection on rendering127- Toggle selection behavior128- Programmatic selection with methods129130### Chart Title and Appearance131132📄 **Read:** [references/chart-title.md](references/chart-title.md)133- Adding and styling chart title134- Title alignment (near, center, far)135- Title background and borders136- Title text styling137138📄 **Read:** [references/chart-appearance.md](references/chart-appearance.md)139- Chart sizing (width/height)140- Chart margin configuration141- Background color and image142- Border customization143144### Callbacks and Events145146📄 **Read:** [references/callbacks.md](references/callbacks.md)147- onLegendItemRender - Customize legend items148- onTooltipRender - Customize tooltip content149- onDataLabelRender - Customize data labels150- onLegendTapped - Handle legend taps151- onSelectionChanged - Handle selection events152- onDataLabelTapped - Handle data label taps153- onPointTap - Handle segment taps154- onPointDoubleTap - Handle double taps155- onPointLongPress - Handle long press156- onChartTouchInteractionUp/Down/Move - Touch interactions157- onRendererCreated - Access series controller158159### Common Patterns and Best Practices160161📄 **Read:** [references/common-patterns.md](references/common-patterns.md)162- Sales pipeline funnel pattern163- Marketing conversion with colors164- Exploded segment emphasis165- Custom neck sizing techniques166- Dynamic updates with controller167- Pattern combination examples168- Pattern selection guide169170### Advanced Features171172📄 **Read:** [references/methods.md](references/methods.md)173- FunnelSeriesController methods174- pixelToPoint conversion175- Dynamic data updates176- Programmatic control177178📄 **Read:** [references/export-funnel-chart.md](references/export-funnel-chart.md)179- Export chart as PNG image180- Export chart as PDF document181- Image quality and pixel ratio182- PDF document creation183184### Localization and Accessibility185186📄 **Read:** [references/accessibility.md](references/accessibility.md)187- Screen reader support188- Color contrast requirements189- Large font support190- Touch target sizing191- Accessible interactions192193📄 **Read:** [references/right-to-left.md](references/right-to-left.md)194- RTL support for Arabic, Hebrew, etc.195- Directionality widget usage196- RTL locale configuration197- Legend and tooltip RTL behavior198199## Quick Start Examples200201### Basic Funnel Chart202203```dart204import 'package:flutter/material.dart';205import 'package:syncfusion_flutter_charts/charts.dart';206207class BasicFunnelChart extends StatelessWidget {208 @override209 Widget build(BuildContext context) {210 final List<ChartData> chartData = [211 ChartData('Prospects', 500),212 ChartData('Qualified', 350),213 ChartData('Contacted', 250),214 ChartData('Negotiating', 150),215 ChartData('Won', 100)216 ];217 218 return Scaffold(219 appBar: AppBar(title: Text('Sales Funnel')),220 body: Center(221 child: SfFunnelChart(222 title: ChartTitle(text: 'Sales Pipeline Analysis'),223 legend: Legend(isVisible: true),224 series: FunnelSeries<ChartData, String>(225 dataSource: chartData,226 xValueMapper: (ChartData data, _) => data.stage,227 yValueMapper: (ChartData data, _) => data.value,228 dataLabelSettings: DataLabelSettings(isVisible: true)229 )230 )231 )232 );233 }234}235236class ChartData {237 ChartData(this.stage, this.value);238 final String stage;239 final double value;240}241```242243### Funnel Chart with Customization244245```dart246import 'package:flutter/material.dart';247import 'package:syncfusion_flutter_charts/charts.dart';248249class CustomFunnelChart extends StatelessWidget {250 @override251 Widget build(BuildContext context) {252 final List<ChartData> chartData = [253 ChartData('Awareness', 1000, Colors.blue),254 ChartData('Interest', 750, Colors.green),255 ChartData('Consideration', 500, Colors.orange),256 ChartData('Intent', 300, Colors.purple),257 ChartData('Purchase', 150, Colors.red)258 ];259 260 return Scaffold(261 appBar: AppBar(title: Text('Marketing Funnel')),262 body: Center(263 child: SfFunnelChart(264 title: ChartTitle(265 text: 'Customer Journey Analysis',266 textStyle: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)267 ),268 legend: Legend(269 isVisible: true,270 position: LegendPosition.bottom271 ),272 tooltipBehavior: TooltipBehavior(enable: true),273 series: FunnelSeries<ChartData, String>(274 dataSource: chartData,275 xValueMapper: (ChartData data, _) => data.stage,276 yValueMapper: (ChartData data, _) => data.value,277 pointColorMapper: (ChartData data, _) => data.color,278 // Customize funnel appearance279 height: '80%',280 width: '80%',281 neckHeight: '20%',282 neckWidth: '15%',283 gapRatio: 0.1,284 explode: true,285 explodeIndex: 4,286 explodeOffset: '10%',287 dataLabelSettings: DataLabelSettings(288 isVisible: true,289 labelPosition: ChartDataLabelPosition.inside,290 textStyle: TextStyle(291 color: Colors.white,292 fontWeight: FontWeight.bold293 )294 )295 )296 )297 )298 );299 }300}301302class ChartData {303 ChartData(this.stage, this.value, this.color);304 final String stage;305 final double value;306 final Color color;307}308```309310### Funnel Chart with Tooltip and Selection311312```dart313import 'package:flutter/material.dart';314import 'package:syncfusion_flutter_charts/charts.dart';315316class InteractiveFunnelChart extends StatefulWidget {317 @override318 _InteractiveFunnelChartState createState() => _InteractiveFunnelChartState();319}320321class _InteractiveFunnelChartState extends State<InteractiveFunnelChart> {322 late TooltipBehavior _tooltipBehavior;323 late SelectionBehavior _selectionBehavior;324325 @override326 void initState() {327 _tooltipBehavior = TooltipBehavior(328 enable: true,329 format: 'point.x: point.y leads',330 color: Colors.black87,331 textStyle: TextStyle(color: Colors.white)332 );333 334 _selectionBehavior = SelectionBehavior(335 enable: true,336 selectedColor: Colors.deepOrange,337 unselectedColor: Colors.grey[300]338 );339 340 super.initState();341 }342343 @override344 Widget build(BuildContext context) {345 final List<ChartData> chartData = [346 ChartData('Visitors', 5000),347 ChartData('Sign-ups', 3500),348 ChartData('Active Users', 2000),349 ChartData('Premium Users', 800),350 ChartData('Renewals', 500)351 ];352 353 return Scaffold(354 appBar: AppBar(title: Text('Subscription Funnel')),355 body: Center(356 child: SfFunnelChart(357 title: ChartTitle(text: 'User Conversion Funnel'),358 legend: Legend(isVisible: true),359 tooltipBehavior: _tooltipBehavior,360 series: FunnelSeries<ChartData, String>(361 dataSource: chartData,362 xValueMapper: (ChartData data, _) => data.stage,363 yValueMapper: (ChartData data, _) => data.count,364 selectionBehavior: _selectionBehavior,365 dataLabelSettings: DataLabelSettings(366 isVisible: true,367 labelPosition: ChartDataLabelPosition.outside368 )369 )370 )371 )372 );373 }374}375376class ChartData {377 ChartData(this.stage, this.count);378 final String stage;379 final double count;380}381```382383## Common Patterns384385📄 **Read:** [references/common-patterns.md](references/common-patterns.md) for detailed implementation patterns386387### Quick Pattern Overview3883891. **Sales Pipeline Funnel** - Basic funnel for sales stages with clear progression3902. **Marketing Conversion with Colors** - Color-coded stages with visual hierarchy3913. **Exploded Segment Emphasis** - Highlight critical stages with exploded segments3924. **Custom Neck Sizing** - Adjust neck dimensions for different visual effects3935. **Dynamic Updates** - Real-time data updates using FunnelSeriesController394395Each pattern includes complete code examples, when to use them, and best practices. See the [common patterns reference](references/common-patterns.md) for full implementations.396397## Key Properties398399### SfFunnelChart Essential Properties400401- `series` - FunnelSeries configuration with data source402- `title` - Chart title (ChartTitle)403- `legend` - Legend configuration (Legend)404- `tooltipBehavior` - Tooltip settings (TooltipBehavior)405- `palette` - Color palette for series406- `backgroundColor` - Chart background color407- `backgroundImage` - Background image408- `borderColor` - Chart border color409- `borderWidth` - Chart border width410- `margin` - Chart margin (EdgeInsets)411- `enableMultiSelection` - Enable multiple segment selection412- `onSelectionChanged` - Selection change callback413- `onLegendItemRender` - Legend item render callback414- `onTooltipRender` - Tooltip render callback415- `onDataLabelRender` - Data label render callback416- `onLegendTapped` - Legend tap callback417- `onDataLabelTapped` - Data label tap callback418- `onChartTouchInteractionUp/Down/Move` - Touch interaction callbacks419420### FunnelSeries Essential Properties421422- `dataSource` - Data source list423- `xValueMapper` - Maps x-axis values from data424- `yValueMapper` - Maps y-axis values from data425- `pointColorMapper` - Maps colors from data426- `name` - Series name for legend427- `height` - Funnel height as percentage (e.g., '80%')428- `width` - Funnel width as percentage (e.g., '80%')429- `neckHeight` - Neck height as percentage (e.g., '20%')430- `neckWidth` - Neck width as percentage (e.g., '15%')431- `gapRatio` - Gap between segments (0 to 1)432- `explode` - Enable exploding segments433- `explodeIndex` - Index of segment to explode434- `explodeOffset` - Explode distance as percentage435- `opacity` - Series opacity (0 to 1)436- `borderWidth` - Segment border width437- `borderColor` - Segment border color438- `dataLabelSettings` - Data label configuration439- `selectionBehavior` - Selection behavior settings440- `enableTooltip` - Enable tooltip for series441- `animationDuration` - Animation duration in milliseconds442- `animationDelay` - Animation delay in milliseconds443- `emptyPointSettings` - Empty point handling444- `initialSelectedDataIndexes` - Initial selection indices445- `onPointTap` - Point tap callback446- `onPointDoubleTap` - Point double tap callback447- `onPointLongPress` - Point long press callback448- `onRendererCreated` - Renderer created callback449450### DataLabelSettings Properties451452- `isVisible` - Show/hide data labels453- `labelPosition` - Position (inside/outside)454- `labelAlignment` - Alignment (outer, auto, top, bottom, middle)455- `textStyle` - Text styling456- `color` - Label background color457- `borderColor` - Label border color458- `borderWidth` - Label border width459- `borderRadius` - Label corner radius460- `margin` - Label margin461- `opacity` - Label opacity462- `angle` - Label rotation angle463- `useSeriesColor` - Use series color for label background464- `showZeroValue` - Show labels for zero values465- `overflowMode` - Overflow handling (none, trim, hide, shift)466467### Legend Properties468469- `isVisible` - Show/hide legend470- `position` - Position (auto, top, bottom, left, right)471- `orientation` - Orientation (auto, horizontal, vertical)472- `title` - Legend title (LegendTitle)473- `overflowMode` - Overflow mode (scroll, wrap)474- `toggleSeriesVisibility` - Enable toggling series visibility475- `backgroundColor` - Legend background color476- `borderColor` - Legend border color477- `borderWidth` - Legend border width478- `opacity` - Legend opacity479- `padding` - Legend padding480- `iconHeight` - Legend icon height481- `iconWidth` - Legend icon width482- `offset` - Floating legend offset483484### TooltipBehavior Properties485486- `enable` - Enable tooltip487- `color` - Tooltip background color488- `borderColor` - Tooltip border color489- `borderWidth` - Tooltip border width490- `opacity` - Tooltip opacity491- `duration` - Display duration in milliseconds492- `animationDuration` - Animation duration493- `elevation` - Tooltip elevation/shadow494- `format` - Tooltip text format495- `header` - Tooltip header text496- `tooltipPosition` - Position (auto, pointer)497- `activationMode` - Activation mode (tap, doubleTap, longPress, none)498- `builder` - Custom tooltip builder499500### SelectionBehavior Properties501502- `enable` - Enable selection503- `selectedColor` - Selected segment color504- `unselectedColor` - Unselected segment color505- `selectedBorderColor` - Selected segment border color506- `selectedBorderWidth` - Selected segment border width507- `unselectedBorderColor` - Unselected segment border color508- `unselectedBorderWidth` - Unselected segment border width509- `selectedOpacity` - Selected segment opacity510- `unselectedOpacity` - Unselected segment opacity511- `toggleSelection` - Enable toggle selection512513## Common Use Cases5145151. **Sales Pipeline** - Track deals through sales stages (leads → closed won)5162. **Marketing Funnel** - Visualize customer journey (awareness → purchase)5173. **Conversion Analysis** - Show user conversion rates across process stages5184. **Recruitment Process** - Display candidate progression through hiring stages5195. **E-commerce Funnel** - Track shopping cart abandonment and checkout flow5206. **Lead Management** - Monitor lead qualification and conversion process5217. **Subscription Funnel** - Analyze user onboarding and subscription flow5228. **Web Analytics** - Display visitor engagement and conversion metrics5239. **Process Efficiency** - Visualize workflow bottlenecks and drop-off points52410. **Customer Journey** - Map customer touchpoints from awareness to loyalty