tp_trina_grid version: 2.3.3

Published 2026-08-29

n/a

sdk | dart flutter
repository | svn
platform | n/a
status | n/a
  • Readme
  • Changelog
  • Versions

taken from version: 2.3.0

copied due to outdated dependencies.

TrinaGrid Demo

✨ TrinaGrid ✨

Pub Version Buy Me A Coffee MIT License

πŸš€ Try the Live Demo πŸš€

⭐ Please star this repository to support the project! ⭐


TrinaGrid is a powerful data grid for Flutter that provides a wide range of features for displaying, editing, and managing tabular data. It works seamlessly on all platforms including web, desktop, and mobile.


πŸ“‘ Table of Contents


πŸ’– Support This Project

TrinaGrid is a maintained and enhanced version of the original PlutoGrid package.
I'm Feras, the current maintainer, and I'm actively working on adding new features and keeping this great package rich and up-to-date.
I continued the development after the original package PlutoGrid was no longer being maintained.

If you find TrinaGrid useful, please consider supporting its development:

Buy Me A Coffee

  • Become a GitHub sponsor: Sponsor @doonfrs
  • Your support will encourage me to dedicate more time to keeping this useful package updated and well-documented.

πŸš€ Migration from PlutoGrid

Automatic migration tool included!

If you're migrating from PlutoGrid, we've included a migration tool to help you automatically update your codebase:

# First, add trina_grid to your pubspec.yaml and run flutter pub get

# Run the migration tool (dry run first to see changes)
flutter pub run trina_grid --migrate-from-pluto-grid --dry-run

# Apply the changes
flutter pub run trina_grid --migrate-from-pluto-grid

# To scan all directories (including build and platform-specific directories)
flutter pub run trina_grid --migrate-from-pluto-grid --scan-all

The migration tool will automatically replace all PlutoGrid references with their TrinaGrid equivalents, including:

  • Class names (PlutoGrid β†’ TrinaGrid)
  • Package imports:
    • package:pluto_grid/pluto_grid.dart β†’ package:trina_grid/trina_grid.dart
    • package:pluto_grid_plus/pluto_grid_plus.dart β†’ package:trina_grid/trina_grid.dart
  • All related components, widgets, and enums

See Migration Tool Documentation for more details.


πŸ“¦ Installation

Add the following dependency to your pubspec.yaml file:

dependencies:
  trina_grid: <latest version>

Then run:

flutter pub get

🏁 Basic Usage

import 'package:flutter/material.dart';
import 'package:trina_grid/trina_grid.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'TrinaGrid Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final List<TrinaColumn> columns = [
    TrinaColumn(
      title: 'ID',
      field: 'id',
      type: TrinaColumnType.text(),
    ),
    TrinaColumn(
      title: 'Name',
      field: 'name',
      type: TrinaColumnType.text(),
    ),
    TrinaColumn(
      title: 'Age',
      field: 'age',
      type: TrinaColumnType.number(),
    ),
    TrinaColumn(
      title: 'Role',
      field: 'role',
      type: TrinaColumnType.select(['Developer', 'Designer', 'Manager']),
    ),
    TrinaColumn(
      title: 'Completion',
      field: 'completion',
      type: TrinaColumnType.percentage(
        decimalDigits: 1,
        showSymbol: true,
      ),
    ),
  ];

  final List<TrinaRow> rows = [
    TrinaRow(
      cells: {
        'id': TrinaCell(value: '1'),
        'name': TrinaCell(value: 'John Doe'),
        'age': TrinaCell(value: 28),
        'role': TrinaCell(value: 'Developer'),
        'completion': TrinaCell(value: 0.75),
      },
    ),
    TrinaRow(
      cells: {
        'id': TrinaCell(value: '2'),
        'name': TrinaCell(value: 'Jane Smith'),
        'age': TrinaCell(value: 32),
        'role': TrinaCell(value: 'Designer'),
        'completion': TrinaCell(value: 0.5),
      },
    ),
    TrinaRow(
      cells: {
        'id': TrinaCell(value: '3'),
        'name': TrinaCell(value: 'Mike Johnson'),
        'age': TrinaCell(value: 45),
        'role': TrinaCell(value: 'Manager'),
        'completion': TrinaCell(value: 0.9),
      },
    ),
  ];

  late TrinaGridStateManager stateManager;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('TrinaGrid Example'),
      ),
      body: Container(
        padding: const EdgeInsets.all(16),
        child: TrinaGrid(
          columns: columns,
          rows: rows,
          onLoaded: (TrinaGridOnLoadedEvent event) {
            stateManager = event.stateManager;
          },
        ),
      ),
    );
  }
}

πŸ¦„ Features

TrinaGrid offers a comprehensive set of features for handling tabular data:

🏷️ Column Features

Column Types

Support for various data types including:

  • Text Type: Character value input
  • Number Type: Numeric value input
  • Boolean Type: True/false selection with custom options
  • Selection Type: Dropdown selection from predefined options
  • Date Type: Date picker input
  • Time Type: Time picker input
  • DateTime Type: Combined date and time input
  • Currency Type: Currency value input with formatting
  • Percentage Type: Percentage value input with decimal precision

Column Freezing

Freeze columns to the left or right

Column Resizing

Adjust column width by dragging

Column Moving

Change column order by drag and drop

Column Hiding

Hide and show columns as needed

Column Sorting

Sort data by clicking on column headers

Column Filtering

Filter data with built-in filter widgets

Column Groups

Group related columns together

Column Renderers

Customize column appearance with custom widgets

Column Title Renderer

Customize column header appearance

Column Footer

Display aggregate values at the bottom of columns

Column Viewport Visibility

Control column visibility based on viewport

Column Menu

Customize the menu on the right side of columns

Filter Icon Customization

Customize or hide the filter icon that appears in column titles after filtering

πŸ§‘β€πŸ€β€πŸ§‘ Row Features

Row Selection

Select single or multiple rows

Row Moving

Reorder rows by drag and drop

Row Coloring

Apply custom colors to rows

Row Wrapper

Customize row appearance and behavior

Row Checking

Built-in checkbox selection for rows

Row Groups

Group related rows together

Frozen Rows

Keep specific rows visible while scrolling

Row Pagination

Paginate rows with built-in pagination support

Row Lazy Pagination

Implement server-side pagination for large datasets

Row Infinity Scroll

Add new rows when scrolling reaches the bottom end

Add/Remove Rows

Dynamically add or delete rows from the grid

Add Rows Asynchronously

Add or set rows asynchronously for better performance

πŸ”² Cell Features

Cell Selection

Select individual cells or ranges

Cell Editing

Edit cell values with appropriate editors

Cell Renderers

Customize individual cell appearance

Cell Validation

Validate cell values during editing

Cell Value Change Handling

Handle and track cell value changes

Edit Cell Renderer

Customize the appearance of cells in edit mode

πŸ“Š Data Management

Pagination Overview

Built-in pagination support with comprehensive options

Client-Side Pagination

Handle pagination on the client side

Lazy Pagination (Server-Side)

Implement server-side pagination for large datasets

Infinite Scrolling

Load data as the user scrolls

Lazy Loading

Load data on demand

Copy & Paste

Copy and paste data between cells

Export

Export data to various formats (CSV, JSON, PDF)

Custom Pagination UI

Customize rows pagination UI with your own design

Custom Footer

Create custom pagination footer widgets at the bottom of the grid

🎨 UI Customization

Themes

Light and dark mode support

Custom Styling

Customize colors, borders, and text styles

Loading Options

Customize loading states and indicators

Enhanced Scrollbars

Draggable scrollbars with hover effects, custom colors, and improved desktop experience

Record Sidebar

Show all fields of the selected row in a searchable, editable panel, docked (pushes the grid) or floating (slides over it)

RTL Support

Right-to-left language support

Dark Mode

Change the entire theme of the grid to dark mode

Value Formatter

Format cell values for display with custom formatters

⚑ Other Features

Keyboard Navigation

Navigate and edit using keyboard shortcuts

Context Menus

Right-click menus for columns and cells

Dual Grid Mode

Display two linked grids side by side

Popup Mode

Use the grid as a popup selector

Change Tracking

Track and manage data changes

Moving

Change the current cell position with arrow keys, enter key, and tab key

Editing State

Control the editing state of cells

Listing Mode

Navigate to detail pages with listing mode

Grid as Popup

Use the grid as a popup selector with TextField integration

Multi-Items Filter Delegate

Advanced filtering with multi-line or multi-item column filtering


Cell-Level Renderers

TrinaGrid now supports cell-level renderers, allowing you to customize the appearance of individual cells:

TrinaCell(
  value: 'Completed',
  renderer: (rendererContext) {
    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
      decoration: BoxDecoration(
        color: Colors.green,
        borderRadius: BorderRadius.circular(12),
      ),
      child: Text(
        rendererContext.cell.value.toString(),
        style: const TextStyle(
          color: Colors.white,
          fontWeight: FontWeight.bold,
        ),
      ),
    );
  },
)

This powerful feature enables:

  • Custom formatting for specific cells
  • Visual indicators based on cell values
  • Interactive elements within cells
  • Conditional styling for individual cells

Cell renderers take precedence over column renderers, giving you fine-grained control over your grid's appearance.


Enhanced Scrollbars

TrinaGrid now includes enhanced scrollbar functionality, particularly useful for desktop applications:

  • Draggable Scrollbars: Quickly navigate large datasets by dragging the scrollbar thumb
  • Hover Effects: Visual feedback when hovering over scrollbars for better user experience
  • Customizable Appearance: Control the colors, thickness, and behavior of scrollbars
  • Desktop Optimized: Enhanced interaction model ideal for desktop applications

πŸ“š Documentation

TrinaGrid comes with comprehensive documentation covering all features and use cases:

Visit our Documentation Index for a complete overview.


πŸ§‘β€πŸ’» Examples

Check out the example project for more usage examples.


πŸ“– API Reference

For detailed API documentation, refer to the following resources:


🀝 Contributing

Contributions are welcome! If you'd like to help improve TrinaGrid, here's how you can contribute:

  • Star the repository ⭐ to show your support
  • Report bugs by opening issues
  • Suggest new features or improvements
  • Submit pull requests to fix issues or add functionality
  • Improve documentation to help other users
  • Share the package with others who might find it useful
  • Sponsor the project to support its development Buy me a coffee Buy Me A Coffee

I'm committed to maintaining and improving this package, and your contributions help make it better for everyone. Feel free to reach out if you have any questions or ideas!


πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

2.3.3 - 2026-08-29

Changed

  • Version bump from 2.3.2 to 2.3.3 (flutter 3.47.2, dart 3.13.2, serverpod 3.4.13).

2.3.2 - 2026-08-28

Changed

  • Version bump from 2.3.1 to 2.3.2 (shadcn_ui -> 0.56.2 (was 0.56.1)).

2.3.1 - 2026-08-19

Changed

  • Version bump from 2.3.0 to 2.3.1 (shadcn_ui -> 0.56.1 (was 0.55.0)).

[2.3.0] - 2026. 07. 23

  • Feature: Added built-in record sidebar with docked and floating modes (#396). @doonfrs
  • Feature: Sidebar fields are editable using grid cell editors with shadcn styling (#399). @doonfrs
  • Feature: Added unfocusedSelectionColor to TrinaGridStyleConfig for visually distinguishing focused vs. unfocused grids in multi-grid layouts (#372). @vasco-feltrin
  • Enhancement: unfocusedSelectionColor now also applies to multi-cell selections (not just the current cell), and falls back to gridBackgroundColor when unset so existing apps see no behavior change. Dark theme ships with a sensible default. @doonfrs
  • Feature: Made columnAscendingIcon and columnDescendingIcon clickable to trigger sorting (#379) (#380). @itsnotmeman
  • Feature: Made scrollbar track-click animation configurable (#277) (#388). @doonfrs
  • Feature: Added Hungarian locale (#382). @nagylzs
  • Feature: Added column filtering demo screen with lazy pagination and dynamic configuration controls (#387). @doonfrs
  • Fix: Arrow keys not working on Linux with NumLock on; all keyboard shortcuts are now NumLock-safe (#381) (#380) (#385). @itsnotmeman @doonfrs
  • Fix: Prevent crash when toggling docked sidebar visibility (#398). @doonfrs
  • Fix: Make selectWithSearch popup usable with a11y semantics on web (#394) (#395). @doonfrs
  • Fix: Decoupled checkbox colors from cell selection colors (#390) (#392). @doonfrs
  • Fix: Guard select cell initialValue against type mismatch (#391). @doonfrs
  • Fix: Scope column filter rebuilds to filter events (#367) (#386). @doonfrs
  • Fix: Include pagination and time picker fields in TrinaGridLocaleText equality (#384). @doonfrs
  • Fix: Column header alignment (#301) and scrollbar thumb overflow (#375). @doonfrs
  • Fix: Provide default ShadTheme so select popups work without ShadApp (#374). @doonfrs
  • Fix: Updated demo for font_awesome_flutter v11 (#397). @doonfrs
  • Chore: Updated shadcn_ui dependency to ^0.55.0. @doonfrs
  • Test: Cover filter popup ShadTheme path (#376) (#378). @doonfrs
  • Test: Updated select cell search tests for the Material TextField search field introduced in #395. @doonfrs

[2.2.2] - 2026. 05. 15

  • Feature: Added TrinaGrid.fitContent to auto-size grid to its rows (#218). @doonfrs
  • Feature: Implemented TrinaDropdownMenu component and cell state with MenuAnchor support (#364). @doonfrs
  • Feature: Added per-row & per-cell text style callbacks (#344). @doonfrs
  • Feature: Added filterIconWidget property to TrinaGridStyleConfig (#348). @jan-siroky
  • Fix: Restore dynamic row height by switching ListView itemExtent to itemExtentBuilder (#365). @doonfrs
  • Fix: Prevent contextMenuIcon from initiating column drag in custom titleRenderer (#318). @doonfrs
  • Fix: Place vertical scrollbar on trailing edge and unmirror horizontal drag in RTL (#359). @doonfrs
  • Fix: Auto-create missing cells when initializing rows so newly appended rows survive hidden-column toggling (#354). @doonfrs
  • Fix: Extend horizontal scroll past vertical scrollbar overlay (#355). @doonfrs
  • Fix: Filter popup column dropdown shows localized titles (#356). @doonfrs
  • Fix: checkReadOnly callback not preventing keyboard-initiated editing (#306). @doonfrs
  • Fix: Currency column sorting broken with non-dot-decimal locales (#337). @doonfrs
  • Fix: Remove renderer caching to fix stale renders with external state (#338). @doonfrs
  • Fix: Use decimal keyboard for numeric column filters (#345). @jan-siroky
  • Fix: Use TrinaOptional for filterIconWidget in copyWith to allow null reset (#349). @doonfrs
  • Docs: Added CLAUDE.md with project guidance for Claude Code agents (#340). @doonfrs
  • Docs: Added llm.txt and llms-full.txt for AI agent discoverability (#339). @doonfrs

[2.2.1] - 2026. 03. 05

  • Fix: Remove unused import in trina_smooth_list_view.dart. @doonfrs

[2.2.0] - 2026. 03. 05

  • Feature: Added metadata support for rows, cells, and columns (#300). @JoshTechLee
  • Feature: Added TrinaColumnType.custom() for complex object storage (#313). @doonfrs
  • Feature: Added updateRowCells helper for batch cell updates (#328). @doonfrs
  • Feature: Added customizable column resize widget support (#317). @doonfrs
  • Feature: Added Is Empty and Is Not Empty filter types (#297). @doonfrs
  • Feature: Added lazy pagination functionality (#285). @doonfrs
  • Feature: Accept any Widget as sort icons, not just Icon (#282). @doonfrs
  • Feature: Added moveDirection to onBeforeActiveCellChange event (#281). @doonfrs
  • Feature: Added TrinaGridColumnHiddenEvent for column visibility changes (#273). @doonfrs
  • Feature: Added rowWrapperIsConstantHeight configuration option (#276). @davidlrichmond
  • Feature: Added keyboardType support to filter TextFields (#325). @jan-siroky
  • Fix: Allow scrollPhysics parameter to take effect in body rows (#329). @doonfrs
  • Fix: Row border misalignment with column border (#327). @doonfrs
  • Fix: Null-safe cell access in row grouping with hidden columns (#326). @doonfrs
  • Fix: Use number format to calculate decimal points (#321). @sschmaljohann
  • Fix: Cache fallback cell in row.cells to avoid rebuild churn (#323). @doonfrs
  • Fix: Null check crash in WASM when row cell missing for column (#322). @jan-siroky
  • Fix: Account for column footer height in scroll calculations (#316). @doonfrs
  • Fix: Remove [Selection] debug prints flooding console (#311). @doonfrs
  • Fix: Resolve null check error in visibility layout and clamp scroll on layout change (#307). @doonfrs
  • Fix: Row moving now works with multiple selected rows (#296). @doonfrs
  • Fix: Renderer cache not invalidating when other cells in row change (#295). @doonfrs
  • Fix: Prevent crash when TrinaDualGrid onSelected is null (#294). @doonfrs
  • Fix: Frozen columns vertical misalignment while scrolling (#293). @doonfrs
  • Fix: visibilityLayout breaks left+right frozen columns (#287). @Hakimbhb
  • Fix: Migrate Android demo build to AGP 8.9.1, Kotlin 2.1.10, and declarative plugins (#286). @Hakimbhb
  • Fix: Resolve all dart analyze warnings. @doonfrs
  • Docs: Add row custom data documentation (#292). @doonfrs

[2.1.1] - 2025. 11. 17

  • Feature: Added scroll physics configuration to TrinaGrid (#262). @doonfrs
  • Feature: Added configurable platform-specific separators for copy/paste (#261). @doonfrs
  • Feature: Added Mac Cmd key support for cell selection. @doonfrs
  • Feature: Added Excel-like cell selection features. @doonfrs
  • Feature: Added cancellable onBeforeActiveCellChange event. @doonfrs
  • Feature: Added smooth scrolling and scrollbar click-to-jump enhancements. @doonfrs
  • Feature: Added click-to-jump functionality to scrollbars. @doonfrs
  • Fix: Optimized callback executions with caching (#252) (#265). @doonfrs
  • Fix: Account for scrollbar width in column auto-sizing (#266). @doonfrs
  • Fix: Initialize all columns when inserting rows to prevent assertion error. @doonfrs
  • Fix: Ensure frozen column divider renders correctly in RTL mode. @doonfrs
  • Fix: Exit edit mode before selection to enable copy operations. @doonfrs
  • Fix: Update outdated test mocks and fix flaky date-time test. @doonfrs
  • Fix: Copy/paste with Ctrl+Click multi-select and Mac support. @doonfrs
  • Fix: Enable custom renderers for group header cells in row grouping. @doonfrs
  • Fix: Apply rowWrapper to frozen column rows. @doonfrs
  • Test: Fix outdated test expectations for time cell and pagination. @doonfrs
  • Docs: Add comprehensive scrollPhysics documentation and tests (#263). @doonfrs

[2.1.0] - 2025. 09. 30

  • Feature: Added comprehensive translations for pagination and time picker. @doonfrs
  • Feature: Added pagination enhancements with global configuration (#228). @doonfrs
  • Feature: Added simplified column filter API methods for programmatic filter management. @doonfrs
  • Feature: Enable column filter visibility in TrinaGrid. @doonfrs
  • Fix: Include hidden columns when creating new rows (#226). @doonfrs
  • Fix: Update sdk, apply standard dart formatting to all file (#222). @doonfrs
  • Fix: Pagination theme updates and height accumulation bug (#221). @doonfrs
  • Fix: Export TrinaDropdownMenuVariant to make it publicly accessible (#220). @doonfrs
  • Fix: Restored mouse scrolling/dragging functionality that was broken since v1.6.11. @doonfrs
  • Breaking Change: Enhanced rowWrapper callback to include TrinaRow data parameter and renamed row widget parameter to rowWidget for clarity. @doonfrs
  • Refactor: Use polymorphism to build cell widgets (#167). @DMouayad
  • Test: Added comprehensive unit tests for column filter functionality (#209). @doonfrs
  • Test: Added comprehensive unit tests for rowWrapper functionality. @doonfrs
  • Docs: Added documentation for checkReadOnly dynamic cell read-only functionality (#223). @doonfrs

[2.0.1] - 2025. 09. 01

  • Feature: Enhanced filter color customization system. @doonfrs
  • Feature: Added cell-level padding property to TrinaCell. @doonfrs
  • Feature: Added validate parameter to changeCellValue method. @doonfrs
  • Feature: Added keyboard event handling to TrinaCell. @doonfrs
  • Feature: Enhanced TrinaGrid with customizable cell text style. @doonfrs
  • Feature: Added cell color functionality to TrinaGrid. @doonfrs
  • Enhancement: Added cell field to TrinaGridOnChangedEvent. @doonfrs
  • Fix: Preserved horizontal borders for cells with custom background colors. @doonfrs
  • Fix: Set default cellReadonlyColor to null to use default cell style. @doonfrs
  • Fix: Improved text cell vertical alignment during editing. @doonfrs
  • Fix: Reduced multi-line filter icon size to 16px. @doonfrs
  • Fix: Improved vertical centering and text styling for edited cells. @doonfrs
  • Fix: Enabled onSelected callback to fire in normal mode with comprehensive row selection support. @doonfrs
  • Fix: Resolved frozen row alignment issue with dynamic row heights. @doonfrs
  • Fix: Improved popup handling in TrinaDateCell. @doonfrs
  • Fix: Improved date time cell styling and height adaptation. @doonfrs
  • Fix: Prevented cell overflow when both Row checking & drag are enabled. @DMouayad
  • Fix: Fixed checkbox overflow in column title. @DMouayad
  • Fix: Grid no longer absorbs unregistered shortcuts. @DMouayad
  • Fix: Key events now properly ignored when grid doesn't have primary focus. @DMouayad
  • Fix: Editing popup no longer shown for readonly cells. @DMouayad

[2.0.0] - 2025. 08. 16

  • Feature: Added new popup cells editing widget, including TrinaSelectMenu, TrinaTimePicker, and TrinaPopup. @DMouayad
  • Feature: Added dynamic row height support. @doonfrs
  • Fix: Ensure combined date and time validation in TrinaDateTimeCell. @DMouayad
  • Feature: Improved initial value handling for date/time pickers. @DMouayad
  • Feature: Enhanced pagination footer with direct page input functionality. @doonfrs
  • Feature: Added CustomFooterScreen to demo and home screens. @doonfrs
  • Feature: Improved time picker UI with scroll-to-change hint. @DMouayad
  • Feature: Added closePopupOnSelection option for date columns. @DMouayad
  • Feature: Added examples for select and time column constraints in editing popups. @DMouayad
  • Fix: Prevent sorting from being triggered when clicking context menu in custom title. @DMouayad
  • Feature: Added loading customization to TrinaLazyPagination. @DMouayad
  • Feature: Added custom pagination UI and demo support. @DMouayad
  • Fix: Corrected empty cell value handling for date/dateTime columns with custom format. @DMouayad
  • Fix: Corrected column title height when enableColumnDrag is false. @DMouayad
  • Feature: Added read-only color configuration to TrinaGrid. @doonfrs

[1.6.12] - 2025. 07. 28

  • Revert Merge cell feature and add it to private branch. ( by @doonfrs )
  • Fix 'There may be a logical error statement in the file filtered_list.dart' ( by @doonfrs )

[1.6.11] - 2025. 07. 28

  • fix: can't start editing while pressing SHIFT key ( by @DMouayad )
  • fix: update number formatting in TrinaAggregateColumnFooter ( by @doonfrs )
  • fix bug [Bug] Drag&Drop moves selected row but not the dragged row ( by @doonfrs )
  • fix bug [Bug] TrinaColumn.formattedValueForType() has to call column types applyFormat() in case TrinaColumnTypeHasFormat implemented by column type. ( by @doonfrs )
  • feat: add cell merging functionality ( by @doonfrs )
  • fix: column-title background color not applied ( by @DMouayad )
  • fix: handle null maxWidth in layout offsets ( by @doonfrs )
  • dev: move pluto grid reference into support section ( by @Elia Tolin )
  • dev: increase size of Try Live Demo and convert to paragraph "please star" section ( by Elia Tolin)
  • fix: unregistered key events do not function when grid in focus ( by @DMouayad)
  • fix: Fix empty cell value for date\dateTime columns with custom format (#129) ( by @DMouayad )

[1.6.10] - 2025. 07. 08

  • fix: show_column_menu in scaled screens ( by @WagDevX )
  • Use NumberFormat to format the value of TrinaAggregateColumnFooter ( by @DMouayad )
  • fix: discontinued cells vertical border when enableCellBorderHorizontal is false ( by @DMouayad )
  • fix: change tracking doesn't work when pasting into a cell ( by @DMouayad )
  • fix: change tracking doesn't work when cell initial value is null ( by @DMouayad )
  • fix: validation in TrinaColumnTypeDate by using dateFormat instead of DateTime for parsing ( by @DMouayad )
  • Add configuration for cell border width ( by @DMouayad )
  • fix: column sorting when TrinaColumn.titleRenderer is provided ( by @DMouayad )
  • Implement RTL-aware movement for grid navigation ( by @doonfrs )
  • Fix column freezing not resorted #110 ( by @DMouayad )
  • fix failing tests for cell height in popup grids ( by @DMouayad )

[1.6.9] - 2025. 05. 28

  • Fix text input bug where the first character is replaced when typing the second character ( by @doonfrs )
  • Add enableAutoSelectFirstRow option to automatically select the first row when in selection mode ( by @doonfrs )
  • Add TrinaFilterTypeRegex for filtering using regular expressions (#64) ( by @doonfrs )
  • Fix row color bug when activatedColor is transparent ( by @doonfrs )
  • Add expandAllRowGroups and collapseAllRowGroups methods to TrinaGridStateManager ( by @doonfrs )
  • Add expand flag to toggleExpandedRowGroup method ( by @doonfrs )
  • Remove Smooth scrolling, it is not ready in the flutter stable version yet ( by @doonfrs )

[1.6.8] - 2025. 04. 15

  • Fix focus issue when header is a TextField or TextFormField ( by @doonfrs )
  • Add RowWrapperScreen to navigation and home screen; update demo with new feature tile ( by @doonfrs )
  • Introduce Multi-Items Filter ( by @doonfrs )
  • Enhance moving to next row when enter key action is editingAndMoveRight ( by @doonfrs )
  • Enhance RTL support by fixing scrollbar positioning and adding RTL scrollbar demo ( by @doonfrs )

[1.6.7] - 2025. 04. 14

  • Introduce date time column type, add example & documentation ( by @doonfrs )
  • Add filterEnterKeyAction to TrinaColumn for controlling keyboard navigation in column filters ( by @doonfrs )
  • Update row color example ( by @doonfrs )
  • Fix horizontal scrollbar calculation issue for the header & footer ( by @doonfrs )
  • Added filterIcon option to TrinaGridStyleConfig ( by @doonfrs )

[1.6.6] - 2025. 03. 22

  • Fix lazy pagination rebuild issue for simple pagination & refresh
  • Add TrinaGridChangeLazyPageEvent ( by @slavap )
  • Flutter 3.27 compatibility ( by @slavap )
  • Introduce TitleRenderer for customizable column titles ( by @doonfrs )
  • Implement custom loading widget support and add Loading Options feature to documentation and demo ( by @doonfrs )
  • Introduce Percentage Column Type ( by @doonfrs )
  • add decimalInput option to percentage column type ( by @doonfrs )
  • fix unit tests, all tests working, remove skipped tests, translate Korean comments to English ( by @doonfrs )

[1.6.5] - 2025. 03. 22

  • Add PDF export functionality with customizable options
  • Introduced PDF export capabilities in the grid export feature, allowing users to export data in PDF format.
  • Added options for customizing PDF title, creator, orientation, header and text colors, and styling through a new TrinaGridExportPdfSettings class.
  • Updated the export dialog to include PDF-specific settings and improved the user interface for selecting columns to export.
  • Enhanced documentation to reflect new PDF export features and usage examples.
  • Export TrinaColumnTypeHasFormat

[1.6.4] - 2025. 03. 20

  • Use dynamic for column menu delegate, instead of String, update the documentation
  • Add ignoreFixedRows option to CSV, JSON, and PDF exports for better data handling

[1.6.3] - 2025. 03. 20

  • Fix selected row style
  • Include current row with currentSelectedRows list in case of grid selection mode is row.
  • add missing arguments to gridConfiguration.copyWith
  • Update column menu example allow merging with the default menu
  • Simplify the column menu delegate, adding example for removing one of the default menu items
  • Add demo for displaying different menu items for specific columns, update the documentation

[1.6.2] - 2025. 03. 19

  • Enhance Export, fix bug with visible columns
  • Change getVisibleColumns to getViewPortVisibleColumns
  • Add documentation for view port visible columns, gotoColumn

[1.6.1] - 2025. 03. 19

  • Fix scrollbar drag performance issue
  • Add export service to export grid data to csv, pdf, json

[1.6.0] - 2025. 03. 18

  • Refactor scrollbars to be more efficient, support more styling & draggable, add example & documentation
  • Add filter to the demo screen to make it easier to find a feature demo code.
  • Add some gif images to the documentation, document more features
  • add onLazyFetchCompleted event
  • add initial export service to export grid data to csv, pdf, json ( under development )
  • Update the documentation for boolean columns
  • Add scrollbar thumb hover color

[1.5.3] - 2025. 03. 17

  • Implemented functionality to display and customize scrollbars

[1.5.2] - 2025. 03. 17

  • Introduce Boolean Type Column

[1.5.1] - 2025. 03. 15

  • Introduce Change Tracking feature

[1.5.0] - 2025. 03. 15

Breaking Changes

  • Renamed editCellWrapper to editCellRenderer for better semantic clarity
  • Renamed parameter editCellWidget to defaultEditCellWidget in editCellRenderer function signature

Enhancements

  • Enhanced editCellRenderer to be column-based
  • Added focus node parameter to editCellRenderer to allow custom widgets to maintain grid focus control

[1.4.16] - 2025. 03. 12

  • Enhanced editCellWrapper to be column-based
  • Added focus node parameter to editCellWrapper to allow custom widgets to maintain grid focus control

[1.4.15] - 2025. 03. 11

  • Enhance the pluto grid migration script
  • Add more documentation

[1.4.14] - 2025. 03. 11

  • Added cell validator for plutoColumn & onValidationFailed for TrinaGrid
  • updated some docs

[1.4.13] - 2025. 03. 10

  • Added cell-level renderer support with TrinaCellRenderer

[1.4.12] - 2025. 03. 10

  • fix incase frozen columns & frozen rows
  • Enhance the readme texts

[1.4.11] - 2025. 03. 10

  • Introducing Frozen Rows

[1.4.10] - 2025. 03. 08

  • Translate all korean comments & unit tests to english

[1.4.9] - 2025. 03. 06

  • Added scrollToColumn method

[1.4.8] - 2025. 03. 06

  • Added getVisibleColumns method & isColumnVisible

[1.4.7] - 2025. 03. 04

  • Fix pagination bug

[1.4.6] - 2025. 03. 04

  • Remove Stratagy pattern from the pagination widget and simplify the code
  • Add total records
  • Enhance the ui of the pagination widget

[1.4.5] - 2025. 03. 01

  • add initialPageSize to PageSizeDropdownTrinaLazyPaginationStrategy and default pageSizeToMove to 1
  • Fix pagination bug

[1.4.4] - 2025. 03. 01

  • Added pagesize dropdown using strategy pattern
  • Upgraded to latest Flutter version
  • Used intl any version for compatibility
  • Added onClear and clearIcon parameters to filter widgets
  • Added filterWidgetDelegate to TrinaColumn
  • Added missing filterWidgetBuilder and onFilterSuffixTap parameters
  • Updated GitHub Actions tests
  • Added optional width parameter to column in TrinaColumnType.select
  • Added ability to disable row checkbox under specific conditions
  • Fixed issue #105
  • Added clear columns filter event
  • Added empty screen to homepage
  • Added VS Code formatting restrictions
  • Fixed unit tests
  • Added guard against missing scroll client (when disposed)
  • Improved row wrapper implementation
  • Changed WidgetBuilder to Widget Function(BuildContext, Widget)
  • Enhanced infinity scroll to continue updating if screen not filled
  • Fixed homescreen pointing to old package
  • Implemented ability to disable row checkbox under conditions
  • Added handling for pure checkbox values when disabled
  • Added null check to prevent 'Null check operator used on a null value' exception
  • Updated intl library to ^0.20.0
  • Added onActiveCellChanged event

[1.4.3] - 2024. 10. 23

  • Added rowWrapper & editCellWrapper for the state manager
  • Manually detect doubleTaps on desktop platform to eliminate delay
  • Several improvements
  • Add TrinaGridRowSelectionCheckBehavior which enables automatically setting the CheckBox values of selected rows
  • Add TrinaGridRowSelectionCheckBehavior
  • Upgrade packages

[1.4.2] - 2024. 07. 15

  • add rowWrapper
  • Added an option for developers to use either the standard Material DatePicker or a custom datepicker.
  • Datepicker - moved isOpenedPopup = true
  • Added the ability to add a custom data property at the row level. For example: you can pass data to onSelect or any other onHandler. (not required)
  • Upgrade some used package to the latest version.

[1.4.1] - 2024. 05. 15

upgrade for flutter 3.22.0

[1.4.0] - 2024. 04. 01

  • Added onRowEnter, onRowExit callbacks to react on. @coruscant187
  • Added logic to change background color of row if hovered. @coruscant187 doonfrs/trina_grid#29

[1.3.1] - 2024. 03. 19

  • upgrade packages to latest major version

2.3.3

2026-08-29 download