Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .fvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"flutter": "3.41.9"
}
2 changes: 1 addition & 1 deletion example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ packages:
path: ".."
relative: true
source: path
version: "7.5.28"
version: "7.5.31"
leak_tracker:
dependency: transitive
description:
Expand Down
21 changes: 21 additions & 0 deletions lib/src/table2/src/controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,27 @@ class ThemedTable2Controller<T> {
}
}

void onSort({
int columnIndex = 0,
bool ascending = true,
}) {
for (var listener in _listeners) {
listener(ThemedTable2OnSortEvent<T>(columnIndex: columnIndex, ascending: ascending));
}
}

void search(String search) {
for (var listener in _listeners) {
listener(ThemedTable2SearchEvent<T>(search: search));
}
}

void onSearch(String search) {
for (var listener in _listeners) {
listener(ThemedTable2OnSearchEvent<T>(search: search));
}
}

void refresh() {
for (var listener in _listeners) {
listener(ThemedTable2RefreshEvent());
Expand Down
26 changes: 26 additions & 0 deletions lib/src/table2/src/events.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,30 @@ class ThemedTable2SortEvent<T> extends ThemedTable2Event<T> {
});
}

class ThemedTable2OnSortEvent<T> extends ThemedTable2Event<T> {
final int columnIndex;
final bool ascending;

ThemedTable2OnSortEvent({
required this.columnIndex,
required this.ascending,
});
}

class ThemedTable2SearchEvent<T> extends ThemedTable2Event<T> {
final String search;

ThemedTable2SearchEvent({
required this.search,
});
}

class ThemedTable2OnSearchEvent<T> extends ThemedTable2Event<T> {
final String search;

ThemedTable2OnSearchEvent({
required this.search,
});
}

class ThemedTable2RefreshEvent<T> extends ThemedTable2Event<T> {}
13 changes: 13 additions & 0 deletions lib/src/table2/src/table.dart
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ class _ThemedTable2State<T> extends State<ThemedTable2<T>> {
];
}

widget.controller?.onSearch(_searchController.text);
if (_searchController.text.isNotEmpty) {
final searchLower = _searchController.text.toLowerCase();
items = items.where((row) {
Expand All @@ -279,6 +280,7 @@ class _ThemedTable2State<T> extends State<ThemedTable2<T>> {
final sortKeys = [
for (final item in items) _itemsStrings[item.hashCode]?[columnIndex] ?? _colSelected.valueBuilder(item),
];
widget.controller?.onSort(columnIndex: columnIndex, ascending: !_isReversed);
_filteredData.value = await compute(
_sort,
_SortParams<T>(
Expand Down Expand Up @@ -334,6 +336,9 @@ class _ThemedTable2State<T> extends State<ThemedTable2<T>> {
}

void _onControllerEvent(ThemedTable2Event event) {
/// Handle sort events from the controller:

/// Sort events are handled by updating the selected column and sort order, then re-filtering and sorting the data.
if (event is ThemedTable2SortEvent<T>) {
final columnIndex = event.columnIndex;
final ascending = event.ascending;
Expand All @@ -349,10 +354,18 @@ class _ThemedTable2State<T> extends State<ThemedTable2<T>> {
return;
}

/// Refresh events are handled by re-filtering and sorting the data.
if (event is ThemedTable2RefreshEvent<T>) {
_filterAndSort('CONTROLLER_REFRESH');
return;
}

/// Search events are handled by updating the search controller text, which triggers the search listener and re-filters the data.
if (event is ThemedTable2SearchEvent<T>) {
_searchController.text = event.search;
_filterAndSort('CONTROLLER_SEARCH');
return;
}
}

@override
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: layrz_theme
description: Layrz standard styling library for Flutter. Widget library following the Material Design 3 guidelines, with a focus on reliavility and functionality.
version: "7.5.31"
version: "7.5.32"
homepage: https://theme.layrz.com
repository: https://github.com/goldenm-software/layrz_theme

Expand Down
Loading