flutter_data_grid 0.0.20
flutter_data_grid: ^0.0.20 copied to clipboard
High-performance, reactive data grid for Flutter with virtualization, sorting, filtering, cell editing, row selection, column pinning, and keyboard navigation.
0.0.20 - 2026-03-15 #
- Breaking: Removed
SelectionMode.single— selection modes are nownoneandmultipleonly - Breaking:
SelectionState.initial()now defaults toSelectionMode.none(wassingle) - Breaking:
enableMultiSelect(false)now setsSelectionMode.none(wassingle) - Added cell selection:
FocusCellEvent,ShiftSelectCellEvent,ToggleCellInSelectionEvent,ClearCellSelectionEvent,SetFocusedCellsEvent,NavigateCellEvent - Added
CopyCellsEvent— copies focused cells to clipboard as CSV; also triggered by Ctrl+C / Cmd+C - Added right-click drag-to-select rectangle over the grid body
- Refactored
CustomLayoutGridBodyinto three focused part files:grid_body_scroll_mixin.dartandgrid_body_drag_select_mixin.dart
0.0.19 - 2026-03-15 #
- Pub points changes
0.0.18 - 2026-03-14 #
- Updated README to remove all references to the removed
TwoDimensionalScrollViewrenderer
0.0.17 - 2026-03-14 #
- Breaking: Removed
DataGridRendererTypeenum andrendererparameter fromDataGrid— only theCustomMultiChildLayoutrenderer is now supported - Breaking: Removed
DataGridBody,DataGridScrollView, and allTwoDimensionalScrollView-based viewport classes (DataGridViewport,RenderDataGridViewport,DataGridChildDelegate,DataGridVicinity) - Fixed scrollbar drag throwing when a track-tap
animateToand a simultaneous dragjumpToconflicted —ExternalScrollPosition.animateTonow resolves instantly viasyncPixelsinstead of starting aDrivenScrollActivity
0.0.16 - 2026-03-14 #
- Fixed
CustomLayoutGridBodytouchpad and pointer device scrolling compatibility - Added trackpad two-finger scroll support via
PointerPanZoomevents - Added ballistic (momentum) scrolling with
ClampingScrollSimulationon gesture end - Added axis locking to prevent unintentional cross-axis scroll during imprecise gestures
- Fixed mouse drag-to-scroll (was silently ignored)
- Fixed ballistic animation stopping cleanly at scroll boundaries instead of overshooting
0.0.14 - 2026-02-23 #
- Added
DataGridRendererTypeenum withtwoDimensionalandcustomLayoutrendering strategies - Added
rendererparameter toDataGridwidget to choose between rendering strategies - Added
CustomLayoutGridBody— an alternative renderer usingCustomMultiChildLayoutwith pointer-based scrolling, giving full control over scroll behaviour and per-axis rebuild optimisation - Refactored custom layout into focused widgets:
GridUnpinnedQuadrant,GridPinnedQuadrant,GridCell,OffsetScrollbar,ExternalScrollPosition, andGridLayoutDelegate - Changed default
cacheExtentfrom 2000.0 to 1000.0
0.0.13 - 2026-02-22 #
- Docs: Added dartdoc comments to all public API members for improved pub.dev documentation score
- Docs: Documented all event classes, state models, controller methods, and widget properties
0.0.12 - 2026-02-22 #
- Breaking: Removed
ViewportStatefromDataGridState— Flutter'sTwoDimensionalScrollViewhandles viewport tracking internally - Breaking: Removed
ViewportDelegate,DefaultViewportDelegate, andViewportCalculator - Breaking: Removed
ScrollEventandViewportResizeEvent - Breaking: Removed
FilterRenderer,RowRenderer, andRenderContext— replaced byfilterWidget+FilterScope - Performance: Cells now use stream-scoped subscriptions instead of
InheritedModel— only affected cells rebuild on selection/edit changes - Performance: Loading overlay wrapped in
DataGridLoadingScopeto avoid unrelated rebuilds - Added
FilterScopeinherited widget andDefaultFilterWidgetfor const-friendly filter rendering - Moved filter widgets to
widgets/filters/directory
0.0.11 - 2026-02-21 #
- Performance: Converted
DataGridCellfromStatelessWidgettoStatefulWidgetwith content caching — cell renderers are only re-called when the row data, column, or selection state for that specific cell changes; unrelated state changes reuse the cached widget - Performance: Replaced
GestureDetector+DecoratedBoxper cell with a single customRenderObject(_CellContainer) — decoration changes are amarkNeedsPaint()only, gesture callback updates are pointer swaps with zero framework cost - Performance: Isolated
InheritedModeldependencies in cells usingBuilderpattern — cell element has no inherited dependencies, only the innerBuildersubscribes - Performance: Cell content cache uses
identical()row reference comparison andvalueAccessorvalue comparison for accurate invalidation - Fixed: Cell value not updating after edit commit due to row equality comparison missing actual data changes
0.0.10 - 2026-02-19 #
- Fixed: Pagination not re-rendering when rows are deleted —
totalItemsandcurrentPageare now updated inDeleteRowEventandDeleteRowsEvent
0.0.9 - 2026-02-19 #
- Fix: Reduced rasterization thread overload during fast scrolling by isolating repaint-heavy subtrees, minimizing per-frame allocations, and preventing unnecessary rebuilds during scroll.
- Performance: Added targeted RepaintBoundary placements and tightened delegate rebuild logic to avoid per-cell subscriptions and costly per-frame work.
0.0.8 #
- Performance: Cell editing now only commits on Enter/focus loss instead of every keystroke
- Fixed: Scroll controller attachment error when changing page size
- Fixed: Keyboard handling in cell editor (Enter commits, Escape cancels)
- Improved: Consistent widget tree structure prevents scroll view conflicts during rebuilds
- Example: Added Actions column with delete button
- Example: Refactored into organized file structure (models, config, renderers)
0.0.7 #
- Fixed: Selection checkbox column now always pinned in multi-selection mode
- Fixed: Body viewport now invalidates column cache when columns change
- Fixed checkbox column alignment issue when switching selection modes
0.0.6 #
- Performance: Replaced AnimatedBuilder in header/filter rows with custom RenderObject (
RenderDataGridHeader) - Header and filter rows now use
markNeedsPaint()on scroll instead of widget rebuilds - Eliminated widget rebuilds during horizontal scrolling for smoother performance
- Added
DataGridHeaderViewportwidget for efficient header/filter rendering - Added 8 new tests for header viewport with pinned/unpinned columns
- Fixed README image path
- Updated test count to 128 passing tests
0.0.5 #
- Performance: Refactored DataGridCell from StatefulWidget to StatelessWidget (StatefulWidget only used during editing)
- Performance: Removed nested StreamBuilders from cells - now using direct state access
- Performance: Added column caching in viewport renderer to avoid recalculating pinned/unpinned columns on every layout
- Performance: Added RepaintBoundary to grid body
- Performance: Removed scroll debounce timer from GridScrollController
- Added
cacheExtentparameter to DataGrid for controlling pre-rendered content - Added smooth scroll physics for better horizontal scrolling momentum
- Simplified DataGridCheckboxCell by removing StreamBuilder
- Removed unused
rowRendererparameter from DataGrid - Removed unused
default_row_renderer.dartfile - Fixed conditional updateRenderObject to avoid unnecessary updates
- Fixed scroll handling - viewport now handles scroll internally via ViewportOffset
0.0.4 #
- Removed unnecessary import in data_grid_controller.dart
0.0.3 #
- Added pagination support with client-side and server-side modes
- New
DataGridPaginationwidget with page navigation and page size selector - Pagination controller methods:
enablePagination(),setServerSidePagination(),setPage(),setPageSize(),nextPage(),previousPage(),firstPage(),lastPage() - Server-side pagination with
onLoadPageandonGetTotalCountcallbacks - Loading overlay during async operations
- New
SetTotalItemsEventfor server-side pagination total count
0.0.2 #
- Updated dependencies to latest versions
- Added dartdoc documentation to public API
- Added topics for pub.dev discoverability
- Fixed example directory structure
- Migrated to freezed v3
0.0.1 #
- Initial release
- High-performance virtualized data grid with support for 100k+ rows
- Core features:
- Column management (resize, pin, hide/show)
- Multi-column sorting with isolate support for large datasets
- Column filtering with multiple operators
- Row selection (none/single/multiple modes)
- Inline cell editing with validation
- Keyboard navigation
- Fully customizable theming
- Event-driven architecture with interceptors
- Performance optimizations:
- Viewport virtualization for 60fps scrolling
- Background isolate processing for sort/filter operations
- Debounced operations