flutter_table_plus 1.13.0
flutter_table_plus: ^1.13.0 copied to clipboard
A highly customizable and efficient table widget for Flutter, featuring synchronized scrolling, theming, sorting, selection, and column reordering.
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.