flutter_table_plus 2.4.2
flutter_table_plus: ^2.4.2 copied to clipboard
A highly customizable and efficient table widget for Flutter, featuring synchronized scrolling, theming, sorting, selection, column reordering, hover buttons, and expandable rows.
2.4.2 #
- FEAT: Added
sortIconWidthtoTablePlusHeaderThemefor accurate tooltip overflow detection with custom sort icons- Sort icon is wrapped in
SizedBox(width: sortIconWidth)to enforce consistent layout - Header tooltip calculation uses
sortIconSpacing + sortIconWidthinstead of hardcoded24.0 - Tooltip now checks actual icon visibility — no space subtracted when
unsortedicon isnull - Default
16.0matches built-inSortIcons.defaultIconssize
- Sort icon is wrapped in
2.4.1 #
- FIX: Columns hitting
maxWidthno longer leave unused space at the end of the table- Proportional width distribution now uses iterative redistribution — when a flexible column is clamped to
maxWidth, the excess space is re-distributed to remaining flexible columns - Guarantees all available width is consumed when uncapped columns exist
- Proportional width distribution now uses iterative redistribution — when a flexible column is clamped to
2.4.0 #
- FEAT: Added
statefulCellBuildertoTablePlusColumn— custom cell builder withisSelectedandisDimstate- Signature:
Widget Function(BuildContext context, T rowData, bool isSelected, bool isDim) - Takes precedence over
cellBuilderwhen both are provided - Added
hasCustomCellBuildergetter andbuildCustomCell()helper onTablePlusColumn
- Signature:
- DEPRECATED:
cellBuilder— usestatefulCellBuilderinstead for access to row selection and dim state
2.3.5 #
- FIX: Last row no longer obscured by horizontal scrollbar
- Automatically reserves space equal to
scrollbarTheme.trackWidthwhen horizontal scrollbar is visible - No new parameters required — applied internally based on existing scroll/theme conditions
- Automatically reserves space equal to
2.3.4 #
- FEAT: Added
cellTapTogglesCheckboxtoTablePlusCheckboxTheme— expands checkbox tap area to the entire selection column cell, preventing accidental single-select when missing the checkbox
2.3.3 #
- FIX:
checkboxColumnWidthbelow defaultminWidth(50) no longer crashes- Selection column now sets
minWidthequal tocheckboxColumnWidth, preventingclamp(min > max)error - e.g.
checkboxColumnWidth: 45previously threwInvalid argument(s): 50.0
- Selection column now sets
2.3.2 #
- FIX: Checkbox column no longer expands proportionally with available width
- Added
maxWidthconstraint equal tocheckboxColumnWidthon the internal__selection__column - Ensures the selection column stays at its configured fixed width regardless of table size
- Added
- FIX: Fixed-width columns no longer cause space loss in proportional layout
- Columns whose
maxWidthcaps their preferred width are now excluded from proportional distribution - Remaining space is distributed only among flexible columns, eliminating the right-side gap
- Columns whose
2.3.1 #
- BREAKING: Extracted
TablePlusResizeHandleThemefrom flat fields onTablePlusHeaderTheme- Removed
resizeHandleWidth,resizeHandleColor,resizeHandleThickness,resizeHandleIndent,resizeHandleEndIndentfromTablePlusHeaderTheme - Added
TablePlusResizeHandleThemeclass withwidth,color,thickness,indent,endIndentandcopyWith - New composed property:
TablePlusHeaderTheme.resizeHandle(defaultconst TablePlusResizeHandleTheme()) - Consistent with existing
TablePlusHeaderBorderTheme/TablePlusHeaderDividerThemepattern
- Removed
- FIX: Hide vertical divider on column reorder drag feedback
- The floating header cell during drag-and-drop reorder no longer renders the right-edge vertical divider
- Added
showDividerparameter to_HeaderCell(defaulttrue, set tofalsefor feedback only)
2.3.0 #
- FEAT: Added
tapTargetSizetoTablePlusCheckboxTheme- Expands the checkbox tap/hover hit-test area without changing the visual checkbox size
- Configurable in logical pixels (e.g.,
tapTargetSize: 40gives a 40×40 hit area) - Defaults to
sizewhen not set — fully backward compatible - Applied to body rows, header select-all, and merged row checkboxes
- BREAKING: Refactored header border/divider into separate theme classes
- Removed
showVerticalDividers,showBottomDivider,dividerColor,dividerThicknessfromTablePlusHeaderTheme - Added
TablePlusHeaderBorderThemefor top/bottom horizontal borders (show,color,thickness) - Added
TablePlusHeaderDividerThemefor vertical column dividers withindent/endIndentsupport - New properties:
topBorder(default hidden),bottomBorder(default visible),verticalDivider(default visible) - Vertical dividers now rendered as
Stackoverlay instead ofBoxDecoration.border, enabling indent control
- Removed
- FEAT: Resize handle
indent/endIndent/thicknessthemingresizeHandleThicknesscontrols the visible indicator line width (default2.0)resizeHandleIndent/resizeHandleEndIndentinset the indicator from top/bottom edges
- FIX: Resize handle now centered on column boundary
- Previously the handle was positioned entirely inside the left column (
right: 0), making it asymmetric - Now uses a header-level
Stackoverlay withleft: cumulativeWidth - handleWidth / 2, giving equal hit area on both sides of the border - Visual indicator line renders at the exact column boundary center
ValueKeyper handle ensures stable state across rebuilds and column reorders
- Previously the handle was positioned entirely inside the left column (
2.2.0 #
- FEAT: Drag-to-select rows
enableDragSelectionparameter enables mouse drag row selection (Excel/Finder style)onDragSelectionUpdatecallback fires during drag with the dragged range row IDsonDragSelectionEndcallback fires once when drag ends- Auto-scroll when dragging near viewport edges (~60fps, speed proportional to edge proximity)
- 8px activation threshold prevents conflicts with existing tap/click gestures
- Works with uniform heights (O(1)), dynamic heights, and merged row groups
- Parent controls selection behavior (replace or additive) — consistent with UI-only philosophy
2.1.1 #
- IMPROVEMENT: Auto-scroll during column resize drag
- When dragging a resize handle near the viewport edge, the table automatically scrolls in that direction
- Scroll speed is proportional to pointer proximity to the edge (50px activation zone)
2.1.0 #
- FEAT: Column resizing support
resizableparameter enables drag-to-resize on column header edgesonColumnResizedcallback fires with(String columnKey, double newWidth)for persistence- Respects per-column
minWidth/maxWidthconstraints; selection column excluded
- FEAT: Resize handle theming in
TablePlusHeaderThemeresizeHandleWidth(default8.0) andresizeHandleColorproperties
- FIX:
minWidth/maxWidthconstraints now enforced in all layout calculation paths
2.0.2 #
- FIX:
showCheckboxColumn: falseinTablePlusCheckboxThemenow properly hides the checkbox column - IMPROVEMENT: Header select-all checkbox auto-hides when
onSelectAllis null
2.0.1 #
- FIX: Fixed header-body column width misalignment when table width exceeds total column widths
2.0.0 #
- BREAKING: Migrated from
Map<String, dynamic>to generic type parameter<T>FlutterTablePlus<T>accepts any data model typerowIdKey→rowId: String Function(T)dimRowKey/invertDimRow→isDimRow: bool Function(T)?TablePlusColumn<T>requiresvalueAccessor: (T) => dynamiccellBuilder,hoverButtonBuilder,calculateRowHeightsignatures useTinstead ofMaponCellChangedreceivesTinstead ofMapMergedRowGroup<T>parameterized with data typesummaryRowData→summaryBuilder: Widget? Function(String columnKey)?
1.17.2 #
- PERF: Eliminated full table rebuilds on mouse hover
- PERF: Cached total data height, row count, and visible columns computation
- PERF: Added overflow detection caching in
TablePlusCell - FIX: Added missing
TextPainter.dispose()inTableRowHeightCalculator
1.17.1 #
- FIX: Fixed scroll controllers being destroyed on every parent rebuild
- FIX: Improved scroll sync reliability in
SyncedScrollControllers
1.17.0 #
- IMPROVEMENT: Added
itemExtentBuilderfor improved scroll performance with large datasets (10,000+ rows)
1.16.7 #
- FEAT: Added
verticalOffsettoTablePlusTooltipThemefor customizable tooltip positioning
1.16.6 #
- BREAKING: Replaced
isDimRowcallback withdimRowKeyandinvertDimRow
1.16.5 #
- FEAT: Added dim row feature with
isDimRowcallback and theme support
1.16.4 #
- FIX: Rapid consecutive taps now correctly trigger multiple
onRowTapwhenonRowDoubleTapis null
1.16.3 #
- FEAT: Added
tooltipBuilderfor custom widget tooltips (priority:tooltipBuilder>tooltipFormatter> default) - FEAT: Enhanced tooltip timing with
exitDurationproperty and hover interaction support - FEAT: Intelligent tooltip positioning that adapts to available screen space
- FEAT: Added
CustomTooltipWrapperThemefor tooltip configuration
1.16.2 #
- FEAT: Added configurable
doubleClickTimetoTablePlusBodyTheme(default 500ms)
1.16.1 #
- FEAT: Added
isSelectedparameter toonRowSecondaryTapDowncallback - IMPROVEMENT: Enhanced
TablePlusScrollbarThemewith independent track/thumb styling (trackWidth,thickness,radius,thumbColor,trackBorder)
1.16.0 #
- BREAKING: Removed deprecated
TablePlusSelectionTheme- Selection styling →
TablePlusBodyTheme(selectedRowColor,selectedRowTextStyle) - Checkbox properties →
TablePlusCheckboxTheme - Row interaction colors →
TablePlusBodyTheme
- Selection styling →
- BREAKING:
onRowSecondaryTap→onRowSecondaryTapDownwithTapDownDetailsandRenderBox
1.15.6 #
- FEAT: Added
TooltipBehavior.onlyTextOverflow— tooltips only appear when text overflows - FIX: Fixed row hover colors not appearing due to Stack blocking
CustomInkWell - REFACTOR: Moved row interaction properties from
TablePlusSelectionThemetoTablePlusBodyTheme - DEPRECATED: Row interaction properties in
TablePlusSelectionTheme(removed in 1.16.0)
1.15.5 #
- FEAT: Added
TablePlusCheckboxThemewith Material 3WidgetStatePropertysupport - DEPRECATED: Checkbox properties in
TablePlusSelectionTheme
1.15.4 #
- BREAKING: Removed
TooltipBehavior.onOverflowOnly
1.15.3 #
- FEAT: Added
onCheckboxChangedcallback to distinguish checkbox clicks from row clicks - FEAT: Added checkbox color customization (
hoverColor,focusColor,fillColor,side) - FIX: Fixed tooltip null check error during column reordering
1.15.2 #
- FEAT: Added
tooltipFormattertoTablePlusColumnfor custom tooltip content - UPDATE: Minimum Flutter version changed to >=3.10.0
1.15.1 #
- FIX: Static analysis fixes
1.15.0 #
- BREAKING: Removed frozen column functionality (
frozenColumns,TablePlusFrozenTheme,TablePlusDividerTheme) - FEAT: Hover button system with
hoverButtonBuilder,HoverButtonPosition, andTablePlusHoverButtonTheme - FEAT: Enhanced expandable row functionality for merged row groups
1.14.2 #
- FEAT: Expandable summary rows for merged row groups
isExpandable,isExpanded,summaryRowDataonMergedRowGrouponMergedRowExpandTogglecallback
- FEAT: Added
summaryRowBackgroundColortoTablePlusBodyTheme - FIX: Fixed tooltip and height calculation in merged rows
1.14.1 #
- FEAT: Added
lastRowBorderBehaviortoTablePlusBodyTheme(never,always,smart) - FIX: Fixed sorting with merged rows
1.14.0 #
- FEAT: Frozen column divider with
TablePlusDividerTheme - FIX: Fixed layout overflow in constrained height containers
- FIX: Fixed vertical scrollbar track height calculation
1.13.2 #
- FIX: Fixed single selection mode — clicking selected row now correctly deselects
1.13.1 #
- FEAT: Added
calculateRowHeightcallback andTableRowHeightCalculatorutility
1.13.0 #
- BREAKING: Removed dynamic row height feature (
RowHeightMode,minRowHeight,TextHeightCalculator)
1.12.0 #
- FEAT: Dynamic row height with
RowHeightMode.dynamicandminRowHeight - FEAT: Improved sorting with merged rows
- REFACTOR:
MergedRowGroupusesrowKeysinstead oforiginalIndices - FIX: Fixed alternate row color logic and background color application
1.11.1 #
- IMPROVEMENT: Improved focus handling for editable cells
1.11.0 #
- FEAT: Merged row functionality with
MergedRowGroupandMergeCellConfig- Selection and editing support for merged cells
- Auto-save on focus loss for editable cells
- FEAT: Added
cellContainerPaddingtoTablePlusEditableTheme
1.10.1 #
- CHORE: Applied
dart format
1.10.0 #
- FEAT: Dynamic row height calculation based on content
- FEAT: Dynamic scrollbar visibility based on content height
1.9.0 #
- FEAT: Added
headerTooltipBehaviortoTablePlusColumn
1.8.0 #
- FEAT: Added
tooltipBehaviortoTablePlusColumn(always,onOverflowOnly,never) - DEPRECATED:
showTooltipOnOverflowin favor oftooltipBehavior
1.7.0 #
- FEAT: Added
noDataWidgetfor custom empty state display - IMPROVEMENT: Sorting auto-disabled when data is empty
1.6.2 #
- FEAT: Added
visibleproperty toTablePlusColumnfor column visibility control
1.6.1 #
- FEAT: Added
selectedTextStyletoTablePlusTheme
1.6.0 #
- FEAT:
decorationandcellDecorationinTablePlusHeaderTheme - FEAT: Granular row interaction colors in
TablePlusSelectionTheme(hoverColor,splashColor,highlightColor) - FEAT:
dividerThicknessinTablePlusHeaderTheme - FEAT:
rowIdKeyfor custom row identifier field - FEAT:
textOverflowproperty onTablePlusColumnwith auto-tooltip on ellipsis
1.5.0 #
- FEAT: Added
SelectionMode.singlefor single row selection
1.4.0 #
- FEAT: Disable column reordering with
onColumnReorder: null - FEAT: Disable sorting with
onSort: null
1.3.0 #
- FEAT: Enabled simultaneous selection and editing
1.2.0 #
- FEAT: Configurable sort cycle order via
sortCycle
1.1.2 #
- FEAT: Added
hintTexttoTablePlusColumnandhintStyletoTablePlusEditableTheme - FEAT: Added
onRowDoubleTapandonRowSecondaryTapcallbacks
1.1.1 #
- Updated README.md
1.1.0 #
- FEAT: Cell editing with
isEditable, per-columneditable,onCellChanged, andTablePlusEditableTheme
1.0.0 #
- Initial release — customizable table widget with synchronized scrolling, theming, sorting, selection, column reordering, and custom cell builders