Skip to main content
Structured grid editing

Editable Flutter data grids with record-level workflows

A cell edit remains a record operation. Grid columns, standalone editors, validation, calculated values, and post/cancel behaviour all work through the same FdcDataSet lifecycle.

COMMUNITY + PRO PREVIEWCommunity foundation with optional Pro capabilities

The core workflow is available in Community. Items marked Pro preview belong to flutter_data_components_pro and are not currently distributed through pub.dev.

TYPED COLUMNS

Columns express field semantics, not only cell appearance.

An FdcDecimalColumn works with decimal conversion and precision. Date, time, boolean, combo, lookup, progress, badge, memo, and custom columns carry their own presentation and editing behaviour while staying connected to the dataset field.

Pro preview adds rating and sparkline columns to the same typed column model. The same stored value can therefore be rendered, edited, filtered, validated, exported, and persisted without a chain of unrelated string conversions.

FdcGrid(
dataSet: orders,
columns: const [
FdcIntegerColumn(fieldName: 'order_id'),
FdcDateColumn(fieldName: 'order_date'),
FdcDecimalColumn(fieldName: 'amount'),
FdcComboColumn(fieldName: 'status'),
],
)
EDIT BUFFER AND VALIDATION

The grid does not accept an invalid record one cell at a time.

When a user starts typing, the dataset owns the working values. Field errors can be displayed on the editor and cell, while record-level validation can still reject the final post. Cancelling restores the complete original record, including dependent values changed during the edit.

Use onFieldChanged for calculations such as amount plus tax, then let beforePost and validation decide whether the record may leave edit state.

onFieldChanged: (dataSet, field, oldValue, newValue) {
if (field.name == 'base' || field.name == 'tax') {
dataSet.setFieldValue(
'total',
dataSet.fieldByName('base').asDouble +
dataSet.fieldByName('tax').asDouble,
);
}
},
OPERATIONAL GRID WORK

Dense data entry needs coordinated interaction, not isolated features.

Keyboard navigation, range selection, clipboard operations, filters, sorting, pinning, moving, grouping, summaries, toolbars, and status items operate over the same dataset and grid state.

Each capability remains opt-in. A lookup grid can stay minimal; a daily operations screen can expose the full keyboard and data-shaping workflow without replacing its underlying component.

COMMUNITY FOUNDATION

Start with one dataset and one record lifecycle.

Install the Community package for the core workflow. Pro preview features are marked explicitly throughout this page.