flutter_table_plus 1.16.6 
flutter_table_plus: ^1.16.6 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.
1.16.6 #
- BREAKING: Replaced 
isDimRowcallback withdimRowKeyandinvertDimRowfor better performance- Use 
dimRowKeyto specify a boolean field in rowData that determines dim state - Use 
invertDimRow: trueto invert the logic (e.g., dim whenisActiveis false) - Eliminates callback overhead - dim state is determined by simple Map lookup
 
 - Use 
 
1.16.5 #
- FEAT: Added dim row feature with 
isDimRowcallback and theme support for styling inactive or conditional rows 
1.16.4 #
- FIX: Fixed row tap behavior when 
onRowDoubleTapis null- When 
onRowDoubleTapis not provided, rapid consecutive taps now correctly trigger multipleonRowTapcalls - Previously, the second tap in a rapid sequence was incorrectly treated as a double-tap and ignored
 - Improved user experience by ensuring consistent tap response when double-tap functionality is disabled
 
 - When 
 
1.16.3 #
- 
FEAT: Added
tooltipBuildersupport for custom widget tooltips- New 
tooltipBuilderproperty enables rich content tooltips with any Flutter widget - Priority system: 
tooltipBuilder>tooltipFormatter> default text tooltip - Works with both regular cells and merged rows
 - Full backward compatibility with existing 
tooltipFormatter 
 - New 
 - 
FEAT: Enhanced
TablePlusTooltipThemewith improved tooltip timing controls- Added 
exitDurationproperty for controlling tooltip dismiss timing - Clarified 
waitDuration,showDuration, andexitDurationdocumentation - Fixed tooltip hover interaction - tooltips now stay visible when mouse hovers over tooltip content
 - Default 
exitDurationis 100ms for responsive tooltip dismissal 
 - Added 
 - 
FEAT: Intelligent tooltip positioning system for
tooltipBuilder- Automatically switches between above/below based on available screen space
 - Prevents clipping at screen boundaries with horizontal repositioning
 
 - 
FEAT: Added
CustomTooltipWrapperThemefor tooltip configuration- New theme structure: 
TablePlusTooltipTheme.customWrapper - Configurable positioning and spacing parameters with sensible defaults
 
 - New theme structure: 
 
1.16.2 #
- FEAT: Added configurable 
doubleClickTimetoTablePlusBodyTheme- Double-click timing for row interactions is now customizable through theme
 - Default value changed from 300ms to 500ms for improved user experience
 - Applies to both regular rows and merged row groups
 - Usage: 
bodyTheme: TablePlusBodyTheme(doubleClickTime: Duration(milliseconds: 400)) 
 
1.16.1 #
- FEAT: Enhanced 
onRowSecondaryTapDowncallback with selection state information- Added 
isSelectedparameter to provide row selection state during right-click/long-press events - New signature: 
(String rowId, TapDownDetails details, RenderBox renderBox, bool isSelected) - Enables context-aware menus that can differentiate between selected and unselected rows
 
 - Added 
 - IMPROVEMENT: Enhanced 
TablePlusScrollbarThemewith independent styling controls- Renamed 
widthtotrackWidthfor clearer semantics (track container size) - Added 
thicknessproperty for independent thumb size control (defaults totrackWidth * 0.7) - Added 
radiusproperty for independent corner rounding control (defaults totrackWidth / 2) - Renamed 
colortothumbColorfor better clarity - Added 
trackBorderproperty supporting fullBorderstyling for track edges - Improved flexibility allowing separate customization of track and thumb appearance
 
 - Renamed 
 
1.16.0 #
- BREAKING: Removed deprecated 
TablePlusSelectionThemeclass- Selection-related styling moved to 
TablePlusBodyTheme(selectedRowColor,selectedRowTextStyle) - Checkbox-related properties moved to 
TablePlusCheckboxTheme - Row interaction colors moved to 
TablePlusBodyTheme(hover, splash, highlight colors) 
 - Selection-related styling moved to 
 - BREAKING: Changed 
onRowSecondaryTaptoonRowSecondaryTapDownwith enhanced position information- Now provides 
TapDownDetailsandRenderBoxfor precise context menu positioning 
 - Now provides 
 - MIGRATION: Update your code for breaking changes:
- Replace 
TablePlusSelectionThemeproperties withTablePlusBodyThemeandTablePlusCheckboxTheme - Update 
onRowSecondaryTapcallbacks toonRowSecondaryTapDownwith new signature 
 - Replace 
 - IMPROVEMENT: Enhanced interaction color fallback logic in 
TablePlusBodyTheme- Selected row interaction colors now fallback to base colors when not specified (previously used Flutter defaults)
 
 
1.15.6 #
- FEAT: Added 
TooltipBehavior.onlyTextOverflowfor smart tooltip display- Tooltips now only appear when text actually overflows the available space
 - Uses 
TextOverflowDetectorutility for accurate overflow detection - Applies to both cell tooltips and header tooltips
 - Calculates available width considering padding, sort icons, and other UI elements
 
 - FIX: Restored 
onlyTextOverflowtooltip behavior that was previously removed - FIX: Fixed row hover colors not appearing due to Stack widget blocking CustomInkWell effects
- Container background color is now conditionally applied based on CustomInkWell availability
 - Hover effects from TablePlusSelectionTheme (rowHoverColor, selectedRowHoverColor) now work properly
 
 - FEAT: Added tooltip overflow test page to example app for demonstrating smart tooltip behavior
 - REFACTOR: Moved row interaction properties from TablePlusSelectionTheme to TablePlusBodyTheme
- Moved 
rowHoverColor,rowSplashColor,rowHighlightColortoTablePlusBodyTheme.hoverColor,splashColor,highlightColor - Moved 
selectedRowHoverColor,selectedRowSplashColor,selectedRowHighlightColorto corresponding properties inTablePlusBodyTheme - Updated widget implementations to use 
TablePlusBodyThemefor row interaction effects 
 - Moved 
 - DEPRECATED: Row interaction properties in TablePlusSelectionTheme will be removed in v1.16.0
- Use corresponding properties in 
TablePlusBodyThemeinstead - Added deprecation warnings and migration guidance in documentation
 
 - Use corresponding properties in 
 - UPDATE: Updated documentation (THEMING.md, SELECTION.md) to reflect new theme structure
 
1.15.5 #
- FEAT: Added TablePlusCheckboxTheme for comprehensive checkbox styling with Material 3 support
 - DEPRECATED: Checkbox properties in TablePlusSelectionTheme are deprecated (use TablePlusCheckboxTheme instead)
 - FEAT: Added Material 3 compliant checkbox theme factory with WidgetStateProperty support
 - FIX: Improved tooltip stability during column reordering operations
 
1.15.4 #
- BREAKING CHANGE: Removed TooltipBehavior.onOverflowOnly (use cellBuilder for overflow tooltips)
 
1.15.3 #
- FEAT: Added onCheckboxChanged callback to distinguish checkbox clicks from row clicks
 - FEAT: Enhanced checkbox customization with new color options
- Added checkboxHoverColor for mouse hover states
 - Added checkboxFocusColor for focus states
 - Added checkboxFillColor for background fill
 - Added checkboxSide for border color and width control
 
 - FIX: Fixed tooltip null check error during column reordering
 
1.15.2 #
- FEAT: Added tooltipFormatter to TablePlusColumn for custom tooltip content based on rowData
 - REFACTOR: Removed unused properties from TablePlusHoverButtonTheme (only horizontalOffset remains)
 - UPDATE: Minimum Flutter version requirement changed from >=1.17.0 to >=3.10.0
 - CLEANUP: Removed unnecessary imports and code
 
1.15.1 #
- FIX flutter analyze
 
1.15.0 #
- BREAKING CHANGE: Removed frozen column functionality.
- Eliminated 
frozenColumnsparameter and related frozen column features for code simplification and better maintainability. - Removed 
TablePlusFrozenThemeandTablePlusDividerThemeclasses. - Applications using frozen columns should migrate to alternative layout approaches.
 
 - Eliminated 
 - FEAT: Added comprehensive hover button system for table rows.
- New 
hoverButtonBuildercallback parameter for creating custom action buttons on row hover. - Added 
HoverButtonPositionenum for positioning buttons (left, center, right). - Introduced 
TablePlusHoverButtonThemewith extensive customization options. - Supports custom styling, animations, and button behavior configuration.
 - Integrated seamlessly with existing selection and editing features.
 
 - New 
 - FEAT: Enhanced expandable row functionality for merged row groups.
- Improved expand/collapse state management with better performance.
 - Added support for custom summary content in collapsed state.
 - Enhanced integration with sorting, selection, and editing operations.
 - Better visual indicators and animations for expand/collapse actions.
 
 - FEAT: Added comprehensive demo page showcasing all table features.
- New 
ComprehensiveTableDemodemonstrating progressive feature adoption. - Interactive control panels for testing different configurations.
 - Real-world scenarios with employee data management examples.
 - Improved developer experience with better feature discovery.
 
 - New 
 - IMPROVEMENT: Major codebase refactoring and optimization.
- Enhanced performance through optimized widget rebuilding strategies.
 - Improved code organization and maintainability.
 - Better separation of concerns across widget components.
 - Reduced complexity by removing unused and deprecated code paths.
 
 - IMPROVEMENT: Updated example applications with new features.
- Added 
HoverButtonDemopage demonstrating hover button capabilities. - Enhanced existing examples with better feature integration.
 - Improved documentation and code comments throughout examples.
 
 - Added 
 - DOCS: Added comprehensive documentation for new features.
- New 
HOVER_BUTTONS.mdguide with usage patterns and customization examples. - New 
EXPANDABLE_ROWS.mdguide covering advanced expandable row scenarios. - Updated existing documentation to reflect architectural improvements.
 
 - New 
 
1.14.2 #
- FEAT: Added expandable summary row functionality for merged row groups.
- Added 
isExpandable,isExpanded, andsummaryRowDataproperties toMergedRowGroup. - Added 
onMergedRowExpandTogglecallback toFlutterTablePlusfor handling expand/collapse interactions. - Summary rows can display calculated totals, counts, or any custom data.
 - Expand/collapse icons automatically appear in the first column of expandable groups.
 
 - Added 
 - FEAT: Added 
summaryRowBackgroundColortoTablePlusBodyThemefor styling summary rows. - IMPROVEMENT: Enhanced 
TableRowHeightCalculator.createHeightCalculatorfor more accurate height calculations.- Improved text layout calculations for complex scenarios.
 - Better handling of padding and text overflow in dynamic height scenarios.
 
 - FIX: Fixed tooltip functionality in merged row cells.
 - FIX: Improved merged row compatibility and rendering issues.
 - FIX: Enhanced height calculation logic for merged row groups.
 - DOCS: Added comprehensive 
expandable_summary_example.dartdemonstrating expandable summary functionality. - DOCS: Updated examples with better feature demonstrations and descriptions.
 
1.14.1 #
- FEAT: Added 
lastRowBorderBehaviortoTablePlusBodyThemeto control the visibility of the last row's bottom border (never,always,smart). - FIX: Fixed an issue where sorting did not work correctly with merged rows in the example.
 - DOCS: Added a comprehensive example (
comprehensive_merged_example.dart) demonstrating various table features together. - CHORE: Updated the main example page to link to the new comprehensive example.
 - CHORE: Updated an icon in the frozen columns demo.
 
1.14.0 #
- FEAT: Added frozen column divider feature.
- Introduced 
TablePlusDividerThemefor customizing divider appearance. - Added divider between frozen and scrollable columns with configurable color, thickness, and margins.
 - Header divider displays at fixed header height, body divider matches actual data content height.
 - Divider automatically appears when both frozen and scrollable columns are present.
 - Added divider theme configuration to main 
TablePlusThemeclass. 
 - Introduced 
 - BUG FIX: Fixed layout overflow issues in constrained height containers.
- Resolved Column overflow errors when table is placed in fixed-height containers like Card.
 - Improved divider positioning to work correctly with flexible layouts.
 
 - BUG FIX: Fixed vertical scrollbar track height calculation.
- Corrected scrollbar track height to account for horizontal scrollbar space.
 - Eliminated extra bottom padding in vertical scrollbar when horizontal scrollbar is present.
 
 
1.13.2 #
- BUG FIX: Fixed single selection mode toggle behavior.
- Fixed issue where clicking on an already selected row in 
SelectionMode.singlewould not deselect the row. - Updated row tap handling logic to consistently support toggle behavior in both single and multiple selection modes.
 - Fixed similar issue in merged row groups when using single selection mode.
 - Improved consistency across all selection interaction methods (row tap, checkbox click, merged row selection).
 
 - Fixed issue where clicking on an already selected row in 
 
1.13.1 #
- FEAT: Added 
calculateRowHeightcallback for external row height calculation.- Introduced optional 
calculateRowHeightparameter toFlutterTablePlus. - Added 
TableRowHeightCalculatorutility class with helper methods. - Supports 
TextOverflow.visiblewith proper height calculation. - Scrollbar height calculation now accounts for dynamic row heights.
 - Includes comprehensive example demonstrating all features together.
 
 - Introduced optional 
 - IMPROVEMENT: Enhanced example applications.
- Added Dynamic Height Example with selection, sorting, and editing features.
 - Increased table heights across all examples for better visibility.
 - Added scrollable main page for better navigation.
 
 
1.13.0 #
- BREAKING CHANGE: Removed dynamic row height feature for performance and stability.
- Removed 
RowHeightModeenum androwHeightModeparameter. - Removed 
minRowHeightparameter. - Removed 
TextHeightCalculatorutility class. - All tables now use fixed row height from theme (reverted to v1.9.0 behavior).
 - This change resolves scroll position issues with large datasets and improves overall performance.
 
 - Removed 
 
1.12.0 #
- FEAT: Added support for dynamic row height.
- Introduced 
RowHeightMode.dynamicto allow rows to resize based on content. - Added 
minRowHeightto control the minimum height of a row. - Added a new example page to demonstrate dynamic row height.
 
 - Introduced 
 - FEAT: Improved sorting with merged rows.
- Merged groups are now dynamically generated based on the sorted data, ensuring they are correctly displayed after sorting.
 
 - REFACTOR: 
MergedRowGroupnow usesrowKeysinstead oforiginalIndicesfor a more robust implementation. - FIX: Corrected the alternate row color logic to use the render index, ensuring correct striping after sorting.
 - FIX: Fixed an issue where the background color of rows was not being applied correctly.
 
1.11.1 #
- IMPROVEMENT: Improved focusing on modification for editable cells.
 
1.11.0 #
- FEAT: Introduced merged row functionality.
- Added 
MergedRowGroupandMergeCellConfigmodels to define row merging behavior. - Implemented 
FlutterTablePlusandTablePlusBodysupport formergedGroups. - Enabled selection for merged row groups, treating them as single selectable units.
 - Added editing capabilities for merged cells, allowing specific merged cells to be editable.
 
 - Added 
 - IMPROVEMENT: Enhanced editable cell experience.
- Improved styling and behavior of editable text fields in merged cells to match regular cells.
 - Implemented auto-save on focus loss for editable cells.
 - Added 
cellContainerPaddingtoTablePlusEditableThemefor consistent padding around editable cell containers. 
 - CHORE: Removed unnecessary code.
- Cleaned up 
operator ==andhashCodeoverrides fromMergedRowGroupandTablePlusColumn. 
 - Cleaned up 
 - DOCS: Added new examples for merged row features.
- Created 
simple_merged_example.dartfor basic merged rows. - Created 
complex_merged_example.dartfor advanced merging scenarios (multiple columns, custom content, multiple groups). - Created 
selectable_merged_example.dartto demonstrate selection with merged rows. - Created 
editable_merged_example.dartto showcase editing functionality with merged rows. 
 - Created 
 
1.10.1 #
- CHORE: Apply 
dart formatfor code consistency. 
1.10.0 #
- FEAT: Dynamic row height calculation based on content.
 - FEAT: Scrollbar visibility is now dynamically adjusted based on content height.
 - REFACTOR: Removed deprecated code and updated to the latest syntax.
 
1.9.0 #
- FEAT: Add header tooltip behavior to table columns.
- Introduces a new 
headerTooltipBehaviorproperty toTablePlusColumnfor controlling tooltip display on column headers. - Updates header rendering logic to show tooltips based on overflow or always/never settings.
 
 - Introduces a new 
 
1.8.0 #
- Features
- Added 
tooltipBehaviortoTablePlusColumnto control when tooltips are displayed (always,onOverflowOnly,never). 
 - Added 
 - Improvements
- Added 
TextOverflowDetectorto accurately determine when text overflows in a cell. 
 - Added 
 - Deprecations
- Deprecated 
showTooltipOnOverflowinTablePlusColumnin favor of the newtooltipBehaviorproperty. 
 - Deprecated 
 
1.7.0 #
- Features
- Added 
noDataWidgetproperty toFlutterTablePlusto allow displaying a custom widget when the data source is empty. 
 - Added 
 - Improvements
- The header sorting functionality is now automatically disabled when there is no data, preventing unnecessary sort actions.
 
 - Documentation
- Added a new guide, 
EMPTY_STATE.md, to explain how to use thenoDataWidgetfeature. - Updated 
README.mdto include the new feature and documentation link. 
 - Added a new guide, 
 
1.6.2 #
- Documentation
- Added documentation for the 
visibleproperty inTablePlusColumnto control column visibility. - Updated 
README.mdto include column visibility in the feature list. 
 - Added documentation for the 
 - Improvements
- Added a comprehensive example for managing column visibility, including UI controls and dialogs.
 - Enhanced the example application with helper functions for column state management.
 
 
1.6.1 #
- Added Selected Text Style
- Added 
selectedTextStyletoTablePlusThemeto allow customizing the text style of selected rows. 
 - Added 
 
1.6.0 #
- 
Enhanced Theming and Styling Capabilities
- Advanced Header Customization: 
TablePlusHeaderThemenow includes adecorationproperty, allowing full control over the header's appearance (e.g., borders, gradients, shadows) usingBoxDecoration. - Individual Header Cell Styling: Added 
cellDecorationtoTablePlusHeaderThemefor styling individual header cells. - Flexible Row Interaction Effects: 
TablePlusSelectionThemehas been updated to provide more granular control over row interaction effects:- Set 
hoverColor,splashColor, andhighlightColorindependently for both normal and selected rows (e.g.,rowHoverColor,selectedRowHoverColor). - If these properties are left 
null, the default Flutter framework effects will be used, enhancing consistency and predictability. - The 
enableRowInteractionEffectsproperty has been removed for a simpler and more direct API. 
 - Set 
 - Customizable Header Divider: Added 
dividerThicknesstoTablePlusHeaderThemeto control the thickness of the header's bottom divider. 
 - Advanced Header Customization: 
 - 
Improved Feature Flexibility
- Custom Row ID Key: Added a 
rowIdKeyproperty toFlutterTablePlus, allowing developers to specify which key in their data map should be used as a unique row identifier. This removes the previous requirement of having a mandatory'id'key. - Text Overflow and Tooltip: 
TablePlusColumnnow supports atextOverflowproperty (ellipsis,clip,fade). Whenellipsisis used, a tooltip automatically appears on hover to show the full text. 
 - Custom Row ID Key: Added a 
 - 
Internal Code Refinements
- Theme Structure Refactoring: Theme-related classes have been organized into separate files (
header_theme.dart,body_theme.dart, etc.) for better code structure and maintainability. 
 - Theme Structure Refactoring: Theme-related classes have been organized into separate files (
 
1.5.0 #
- 
Added Single Selection Mode
- Introduced 
SelectionMode.singleto allow only one row to be selected at a time. - When a new row is selected in single selection mode, the previous selection is automatically cleared.
 - The "Select All" checkbox is now automatically hidden when in single selection mode for a cleaner UI.
 
 - Introduced 
 - 
Refactored Example Page
- The main example page (
table_example_page.dart) has been significantly refactored for better readability and maintainability. - Key UI components like the app bar actions, status indicators, and documentation sections have been extracted into their own reusable widgets:
TableAppBarActionsTableStatusIndicatorsExampleDocumentation
 - This improves code organization and makes the example easier to understand and adapt.
 
 - The main example page (
 
1.4.0 #
- 
Enhanced Feature Control Options
- Added ability to completely disable column reordering by setting 
onColumnReorder: null. This removes drag handles and disables drag-and-drop functionality entirely. - Added ability to completely disable sorting by setting 
onSort: null. This hides all sort icons and disables sorting click handlers for all columns. - Improved conditional feature control for better user experience and permissions-based functionality.
 
 - Added ability to completely disable column reordering by setting 
 - 
Documentation Improvements
- Added comprehensive Column Reordering section to ADVANCED_COLUMNS.md with complete implementation examples.
 - Enhanced SORTING.md with detailed comparison between 
sortable: falseandonSort: null. - Updated README.md with new "Conditional Feature Control" section and examples.
 - Added practical examples for dynamic feature enabling/disabling based on user permissions.
 
 
1.3.0 #
- Enabled Simultaneous Selection and Editing
- Removed the restriction that prevented 
isSelectableandisEditablefrom being active at the same time. - Now, rows can be selected even when cell editing is enabled, providing greater flexibility.
 
 - Removed the restriction that prevented 
 
1.2.0 #
- Added Configurable Sort Cycle Order
FlutterTablePlusnow includes asortCycleproperty to define the sequence of sorting states (ascending,descending,none).- The default cycle is 
ascending->descending->none. - This allows for more flexible sorting behaviors, such as disabling the 
nonestate or changing the order. 
 
1.1.2 #
- Added Hint Text and Style for Editable Cells
TablePlusColumnnow includes an optionalhintTextproperty to display placeholder text in editableTextFields.TablePlusEditableThemenow includes an optionalhintStyleproperty to customize the style of the hint text.
 - Added Row Double-Tap and Secondary-Tap Callbacks
FlutterTablePlusnow providesonRowDoubleTapandonRowSecondaryTapcallbacks for row-level gesture detection.- These callbacks are active when 
isSelectableistrueandisEditableisfalse. CustomInkWellnow correctly handlesonDoubleTapandonSecondaryTapevents without interfering withonTap.- Ensured 
CustomInkWell's internal state is preserved duringsetStateby addingkey: ValueKey(rowId). 
 
1.1.1 #
- Update README.md
 
1.1.0 #
- Added Cell Editing Feature
 
Features #
- Editable Cells: Introduced 
isEditableproperty inFlutterTablePlusto enable or disable cell editing. - Column-Specific Editing: Added 
editableproperty toTablePlusColumnto control which columns can be edited. - Cell Change Callback: Implemented 
onCellChangedto notify when a cell's value is updated. - Theming for Editing: Added 
TablePlusEditableThemeto customize the appearance of cells in editing mode (background color, text style, borders, etc.). - Keyboard Support: Press 
Enterto save changes orEscapeto cancel editing. Editing also stops when the cell loses focus. 
1.0.0 #
- Initial release of 
flutter_table_plus 
Features #
- Highly Customizable Table: Provides a flexible and efficient table widget.
 - Synchronized Scrolling: Horizontal and vertical scrolling is synchronized between the header and body.
 - Theming: Extensive customization of table appearance through 
TablePlusTheme, including headers, rows, scrollbars, and selection styles. - Column Sorting: Supports sorting columns in ascending, descending, or unsorted order. The sorting logic is handled by the parent widget.
 - Row Selection: Allows for single or multiple row selection with checkboxes.
 - Column Reordering: Supports drag-and-drop column reordering.
 - Custom Cell Builders: Allows for custom widget rendering in cells for complex data representation.
 - Type-Safe Column Builder: Use 
TableColumnsBuilderto safely create and manage column order.