diff --git a/packages/syncfusion_flutter_treemap/lib/src/layouts.dart b/packages/syncfusion_flutter_treemap/lib/src/layouts.dart index 209425c82..efeb3e5f9 100644 --- a/packages/syncfusion_flutter_treemap/lib/src/layouts.dart +++ b/packages/syncfusion_flutter_treemap/lib/src/layouts.dart @@ -712,11 +712,15 @@ class Treemap extends StatefulWidget { required this.tooltipSettings, required this.enableDrilldown, required this.breadcrumbs, + this.rebuildToken, }) : super(key: key); /// Represents the length of the given data source. final int dataCount; + /// Optional token to force widget rebuild when data values change. + final Object? rebuildToken; + /// Returns a value based on which index passed through it. final IndexedDoubleValueMapper weightValueMapper; @@ -1194,7 +1198,8 @@ class _TreemapState extends State with SingleTickerProviderStateMixin { if (_levelsLength != widget.levels.length) { _levelsLength = widget.levels.length; _invalidate(); - } else if (widget.dataCount != oldWidget.dataCount) { + } else if (widget.dataCount != oldWidget.dataCount || + widget.rebuildToken != oldWidget.rebuildToken) { _invalidate(); } diff --git a/packages/syncfusion_flutter_treemap/lib/treemap.dart b/packages/syncfusion_flutter_treemap/lib/treemap.dart index 1b142be33..23699cd82 100644 --- a/packages/syncfusion_flutter_treemap/lib/treemap.dart +++ b/packages/syncfusion_flutter_treemap/lib/treemap.dart @@ -1870,6 +1870,7 @@ class SfTreemap extends StatelessWidget { this.tooltipSettings = const TreemapTooltipSettings(), this.enableDrilldown = false, this.breadcrumbs, + this.rebuildToken, }) : assert(dataCount > 0), assert(levels.length > 0), assert(colorMappers == null || colorMappers.length > 0), @@ -1991,6 +1992,7 @@ class SfTreemap extends StatelessWidget { this.tileHoverBorder, this.enableDrilldown = false, this.breadcrumbs, + this.rebuildToken, }) : assert(dataCount > 0), assert(levels.length > 0), assert(colorMappers == null || colorMappers.length > 0), @@ -2111,6 +2113,7 @@ class SfTreemap extends StatelessWidget { this.tileHoverBorder, this.enableDrilldown = false, this.breadcrumbs, + this.rebuildToken, }) : assert(dataCount > 0), assert(levels.length > 0), assert(colorMappers == null || colorMappers.length > 0), @@ -2177,6 +2180,33 @@ class SfTreemap extends StatelessWidget { /// * [SfTreemap], to know how treemap render the tiles. final int dataCount; + /// Optional token to force widget rebuild when data values change. + /// + /// The treemap widget only rebuilds when [dataCount] changes. If data values + /// change but the count remains the same, use this parameter to trigger a + /// rebuild by changing its value. + /// + /// Example: + /// ```dart + /// int _rebuildToken = 0; + /// + /// void updateData() { + /// setState(() { + /// _data = newData; + /// _rebuildToken++; + /// }); + /// } + /// + /// SfTreemap( + /// dataCount: _data.length, + /// rebuildToken: _rebuildToken, + /// ) + /// ``` + /// + /// See also: + /// * [SfTreemap.dataCount], to know how to set the data count. + final Object? rebuildToken; + /// Returns the values which determines the weight of each tile. /// /// The quantitative value of the underlying data has to be returned from the @@ -3085,6 +3115,7 @@ class SfTreemap extends StatelessWidget { tooltipSettings: tooltipSettings, enableDrilldown: enableDrilldown, breadcrumbs: breadcrumbs, + rebuildToken: rebuildToken, ); }