TCrudTable<T, K, F extends TFormBase> class

A complete CRUD (Create, Read, Update, Delete) table component.

TCrudTable provides a full-featured data table with:

  • Create, edit, view, archive, restore, and delete operations
  • Form-based create/edit dialogs
  • Active and archive tabs
  • Permission-based action visibility
  • Expandable rows
  • Server-side or client-side data
  • Custom actions

Basic Usage

TCrudTable<Product, int, ProductForm>(
  headers: productHeaders,
  items: products,
  createForm: () => ProductForm(),
  editForm: (product) => ProductForm.fromProduct(product),
  onCreate: (form) async {
    return await api.createProduct(form.toJson());
  },
  onEdit: (product, form) async {
    return await api.updateProduct(product.id, form.toJson());
  },
  onArchive: (product) async {
    await api.archiveProduct(product.id);
    return true;
  },
)

With Archive Support

TCrudTable<User, int, UserForm>(
  headers: userHeaders,
  onLoad: (options) async {
    final response = await api.getUsers(options);
    return TLoadResult(
      items: response.users,
      totalItems: response.total,
    );
  },
  onArchiveLoad: (options) async {
    final response = await api.getArchivedUsers(options);
    return TLoadResult(
      items: response.users,
      totalItems: response.total,
    );
  },
  onRestore: (user) async {
    await api.restoreUser(user.id);
    return true;
  },
  onDelete: (user) async {
    await api.deleteUser(user.id);
    return true;
  },
)

Type parameters:

  • T: The type of items in the table
  • K: The type of the item key
  • F: The form type (must extend TFormBase)

See also:

Inheritance

Constructors

TCrudTable({Key? key, required List<TTableHeader<T, K>> headers, List<T>? items, TLoadListener<T>? onLoad, List<T>? archivedItems, TLoadListener<T>? onArchiveLoad, F createForm()?, F editForm(T item)?, Future<T?> onCreate(F form)?, Future<void> onView(T item)?, Future<T?> onEdit(T item, F form)?, Future<bool> onArchive(T item)?, Future<bool> onRestore(T item)?, Future<bool> onDelete(T item)?, TCrudConfig<T, K> config = const TCrudConfig(), TListController<T, K>? controller, TListController<T, K>? archiveController, Widget expandedBuilder(BuildContext ctx, TListItem<T, K> item, int index)?, TTableTheme? theme})
Creates a CRUD table.
const

Properties

archiveController TListController<T, K>?
Controller for managing archived items.
final
archivedItems List<T>?
The list of archived items (for client-side).
final
config TCrudConfig<T, K>
Configuration for the CRUD table.
final
controller TListController<T, K>?
Controller for managing active items.
final
createForm → F Function()?
Factory function to create a new form.
final
editForm → F Function(T item)?
Factory function to create an edit form from an item.
final
expandedBuilder Widget Function(BuildContext ctx, TListItem<T, K> item, int index)?
Builder for expanded row content.
final
hashCode int
The hash code for this object.
no setterinherited
headers List<TTableHeader<T, K>>
The column headers for the table.
final
items List<T>?
The list of active items (for client-side).
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onArchive Future<bool> Function(T item)?
Callback for archiving an item.
final
onArchiveLoad TLoadListener<T>?
Callback for loading archived items (for server-side).
final
onCreate Future<T?> Function(F form)?
Callback for creating a new item.
final
onDelete Future<bool> Function(T item)?
Callback for permanently deleting an item.
final
onEdit Future<T?> Function(T item, F form)?
Callback for editing an existing item.
final
onLoad TLoadListener<T>?
Callback for loading active items (for server-side).
final
onRestore Future<bool> Function(T item)?
Callback for restoring an archived item.
final
onView Future<void> Function(T item)?
Callback for viewing an item.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
theme TTableTheme?
Custom theme for the table.
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<TCrudTable<T, K, F>>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited