flutter_table_plus 1.14.0
flutter_table_plus: ^1.14.0 copied to clipboard
A highly customizable and efficient table widget for Flutter, featuring synchronized scrolling, theming, sorting, selection, and column reordering.
1.14.0 #
- FEAT: Added frozen column divider feature.
- Introduced
TablePlusDividerTheme
for 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
TablePlusTheme
class.
- 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.single
would 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
calculateRowHeight
callback for external row height calculation.- Introduced optional
calculateRowHeight
parameter toFlutterTablePlus
. - Added
TableRowHeightCalculator
utility class with helper methods. - Supports
TextOverflow.visible
with 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
RowHeightMode
enum androwHeightMode
parameter. - Removed
minRowHeight
parameter. - Removed
TextHeightCalculator
utility 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.dynamic
to allow rows to resize based on content. - Added
minRowHeight
to 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:
MergedRowGroup
now usesrowKeys
instead oforiginalIndices
for 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
MergedRowGroup
andMergeCellConfig
models to define row merging behavior. - Implemented
FlutterTablePlus
andTablePlusBody
support 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
cellContainerPadding
toTablePlusEditableTheme
for consistent padding around editable cell containers.
- CHORE: Removed unnecessary code.
- Cleaned up
operator ==
andhashCode
overrides fromMergedRowGroup
andTablePlusColumn
.
- Cleaned up
- DOCS: Added new examples for merged row features.
- Created
simple_merged_example.dart
for basic merged rows. - Created
complex_merged_example.dart
for advanced merging scenarios (multiple columns, custom content, multiple groups). - Created
selectable_merged_example.dart
to demonstrate selection with merged rows. - Created
editable_merged_example.dart
to showcase editing functionality with merged rows.
- Created
1.10.1 #
- CHORE: Apply
dart format
for 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
headerTooltipBehavior
property toTablePlusColumn
for 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
tooltipBehavior
toTablePlusColumn
to control when tooltips are displayed (always
,onOverflowOnly
,never
).
- Added
- Improvements
- Added
TextOverflowDetector
to accurately determine when text overflows in a cell.
- Added
- Deprecations
- Deprecated
showTooltipOnOverflow
inTablePlusColumn
in favor of the newtooltipBehavior
property.
- Deprecated
1.7.0 #
- Features
- Added
noDataWidget
property toFlutterTablePlus
to 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 thenoDataWidget
feature. - Updated
README.md
to include the new feature and documentation link.
- Added a new guide,
1.6.2 #
- Documentation
- Added documentation for the
visible
property inTablePlusColumn
to control column visibility. - Updated
README.md
to 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
selectedTextStyle
toTablePlusTheme
to allow customizing the text style of selected rows.
- Added
1.6.0 #
-
Enhanced Theming and Styling Capabilities
- Advanced Header Customization:
TablePlusHeaderTheme
now includes adecoration
property, allowing full control over the header's appearance (e.g., borders, gradients, shadows) usingBoxDecoration
. - Individual Header Cell Styling: Added
cellDecoration
toTablePlusHeaderTheme
for styling individual header cells. - Flexible Row Interaction Effects:
TablePlusSelectionTheme
has been updated to provide more granular control over row interaction effects:- Set
hoverColor
,splashColor
, andhighlightColor
independently 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
enableRowInteractionEffects
property has been removed for a simpler and more direct API.
- Set
- Customizable Header Divider: Added
dividerThickness
toTablePlusHeaderTheme
to control the thickness of the header's bottom divider.
- Advanced Header Customization:
-
Improved Feature Flexibility
- Custom Row ID Key: Added a
rowIdKey
property 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:
TablePlusColumn
now supports atextOverflow
property (ellipsis
,clip
,fade
). Whenellipsis
is 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.single
to 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:
TableAppBarActions
TableStatusIndicators
ExampleDocumentation
- 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: false
andonSort: 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
isSelectable
andisEditable
from 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
FlutterTablePlus
now includes asortCycle
property 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
none
state or changing the order.
1.1.2 #
- Added Hint Text and Style for Editable Cells
TablePlusColumn
now includes an optionalhintText
property to display placeholder text in editableTextField
s.TablePlusEditableTheme
now includes an optionalhintStyle
property to customize the style of the hint text.
- Added Row Double-Tap and Secondary-Tap Callbacks
FlutterTablePlus
now providesonRowDoubleTap
andonRowSecondaryTap
callbacks for row-level gesture detection.- These callbacks are active when
isSelectable
istrue
andisEditable
isfalse
. CustomInkWell
now correctly handlesonDoubleTap
andonSecondaryTap
events without interfering withonTap
.- Ensured
CustomInkWell
's internal state is preserved duringsetState
by addingkey: ValueKey(rowId)
.
1.1.1 #
- Update README.md
1.1.0 #
- Added Cell Editing Feature
Features #
- Editable Cells: Introduced
isEditable
property inFlutterTablePlus
to enable or disable cell editing. - Column-Specific Editing: Added
editable
property toTablePlusColumn
to control which columns can be edited. - Cell Change Callback: Implemented
onCellChanged
to notify when a cell's value is updated. - Theming for Editing: Added
TablePlusEditableTheme
to customize the appearance of cells in editing mode (background color, text style, borders, etc.). - Keyboard Support: Press
Enter
to save changes orEscape
to 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
TableColumnsBuilder
to safely create and manage column order.