fitgrid — a fast Flutter data table

A Flutter data grid that measures your content instead of making you guess column widths, and paints cells instead of building a widget for each one. It scrolls a million rows as smoothly as a hundred.

Try the live demo pub.dev GitHub Choosing a Flutter data table

fitgrid showing employees with content-sized columns, a sorted salary column, selected rows and a footer total

Install

flutter pub add fitgrid_table
FitGrid<Employee>(
  rows: employees,
  columns: [
    FitGridColumn(id: 'name', label: 'Name', value: (e) => e.name, sortable: true),
    FitGridColumn(id: 'role', label: 'Role', value: (e) => e.role),
    FitGridColumn(id: 'salary', label: 'Salary', value: (e) => '\$${e.salary}',
        alignment: FitGridAlignment.end),
  ],
)

No width arithmetic: every column measures its content.

Why it is fast

RowsFirst frameMedian scroll frameRows laid out
1,00021.0 ms5.1 ms20
100,00028.7 ms3.3 ms20
1,000,00041.6 ms2.9 ms20

A block of cells is one render object with cached text painters, so the work tracks the viewport, never the dataset. Measured by the benchmarks in the repository.

Everything a data grid needs

Screenshots

Learn more