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:

  • ScatterChartWidget for two-dimensional scatter plots (import from save_points_chart)
  • BubbleDataSet for bubble data structure (import from models)
Inheritance

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, Widget? footer, 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
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