BubbleChartWidget class
A modern bubble chart widget for visualizing three-dimensional data.
This widget displays data points as bubbles where x, y represent position and size represents a third dimension. Perfect for visualizing relationships between three variables (e.g., sales, profit, and market share).
Features
- Multiple data series support with distinct colors
- Interactive bubble tapping with haptic feedback (onBubbleTap)
- Hover support for desktop/web platforms (onBubbleHover)
- Background tap handling (onChartTap)
- Customizable bubble size range (minBubbleSize, maxBubbleSize)
- Smooth entrance animations
- Full theme support (light/dark mode)
- Glassmorphism and neumorphism effects
- Optimized rendering with bounds caching
Example
BubbleChartWidget(
dataSets: [
BubbleDataSet(
label: 'Products',
color: Colors.blue,
dataPoints: [
BubbleDataPoint(x: 10, y: 20, size: 50),
BubbleDataPoint(x: 15, y: 30, size: 75),
],
),
],
theme: ChartTheme.light(),
minBubbleSize: 5.0,
maxBubbleSize: 30.0,
onBubbleTap: (point, datasetIndex, pointIndex, position) {
print('Tapped bubble: ${point.y}');
},
onBubbleHover: (point, datasetIndex, pointIndex) {
if (point != null) {
showTooltip('Bubble: ${point.y}');
}
},
onChartTap: (position) {
// Handle background tap
},
)
Performance Tips
- Bounds are automatically cached to avoid recalculation
- Use RepaintBoundary around multiple charts
- Consider data point limits for very large datasets
See also:
ScatterChartWidgetfor two-dimensional scatter plots (import from save_points_chart)BubbleDataSetfor bubble data structure (import from models)
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- BubbleChartWidget
Constructors
-
BubbleChartWidget({Key? key, required List<
BubbleDataSet> dataSets, double minBubbleSize = 5.0, double maxBubbleSize = 30.0, bool showGrid = true, bool showAxis = true, bool showLabel = true, String? title, String? subtitle, Widget? header, BubbleTapCallback? onBubbleTap, BubbleHoverCallback? onBubbleHover, ChartTapCallback? onChartTap, bool isLoading = false, bool isError = false, double? height, EdgeInsets? padding, EdgeInsets? margin, ChartsConfig? config, int? xAxisLabelRotation, int? yAxisLabelRotation}) - Creates a bubble chart widget.
Properties
- config → ChartsConfig?
-
final
-
dataSets
→ List<
BubbleDataSet> -
final
-
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- header → Widget?
-
final
- height → double?
-
final
- isError → bool
-
final
- isLoading → bool
-
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- margin → EdgeInsets?
-
final
- maxBubbleSize → double
-
final
- minBubbleSize → double
-
final
- onBubbleHover → BubbleHoverCallback?
-
final
- onBubbleTap → BubbleTapCallback?
-
final
- onChartTap → ChartTapCallback?
-
final
- padding → EdgeInsets?
-
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- showAxis → bool
-
final
- showGrid → bool
-
final
- showLabel → bool
-
final
- subtitle → String?
-
final
- title → String?
-
final
- xAxisLabelRotation → int?
-
final
- yAxisLabelRotation → int?
-
final
Methods
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → State< BubbleChartWidget> -
Creates the mutable state for this widget at a given location in the tree.
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited