• Ready for a large number of data. High performance. Building cells on demand.
  • Focused on Web/Desktop Applications.
  • Model mode, where the table owns the rows and sorts them, or builder mode, where the rows come from your own state (Bloc, ChangeNotifier, etc.), for example for server-side sorting.
  • Bidirectional scroll bars.
  • Resizable.
  • Column auto size to fit the content.
  • Dynamic row height.
  • Column summary (Footer).
  • Highly customizable.
  • Custom cells.
  • Pinned columns.
  • Multiple sort.
  • Infinite scroll.
  • Trailing widget.

Model mode

A DaviModel holds the rows and takes care of them, including sorting.

DaviModel<Person> model = DaviModel(rows: rows, columns: [
  DaviColumn(name: 'Name', cellValue: (params) => params.data.name),
  DaviColumn(name: 'Age', cellValue: (params) => params.data.age)
]);

Davi<Person>(model);

Builder mode

A DaviController keeps only the state of the columns. The rows come from you: when they change, rebuild with a new list. Tapping a header calls onSort, and you provide the rows in the requested order.

DaviController<Person> controller = DaviController(columns: [
  DaviColumn(name: 'Name', cellValue: (params) => params.data.name),
  DaviColumn(name: 'Age', cellValue: (params) => params.data.age)
]);

Davi<Person>.builder(
    controller: controller,
    rows: rows,
    onSort: (sortedColumns) {
      // Sort the rows (or fetch them sorted) and rebuild.
    });

Explore and learn more by clicking here.

Libraries

davi