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 tableK: The type of the item keyF: The form type (must extend TFormBase)
See also:
- TDataTable for simple data tables
- TFormBase for form definitions
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- TCrudTable
Constructors
-
TCrudTable({Key? key, required List<
TTableHeader< headers, List<T, K> >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