mass deletion of items

This commit is contained in:
marcoabat
2023-08-06 22:33:11 +02:00
parent 37704abfa1
commit af8b08c120
2 changed files with 16 additions and 6 deletions

View File

@@ -23,7 +23,7 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
List<Item> _items = []; List<Item> _items = [];
int? _selectedItemId; int? _selectedItemId;
String? pageTitle; String? pageTitle;
List<int> selectedItems = []; List<int> selectedItemIndexes = [];
@override @override
void dispose() { void dispose() {
@@ -137,7 +137,7 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
appBar: AppBar( appBar: AppBar(
title: Text(pageTitle ?? ''), title: Text(pageTitle ?? ''),
actions: [ actions: [
if (selectedItems.isNotEmpty) if (selectedItemIndexes.isNotEmpty)
IconButton( IconButton(
onPressed: _onDeleteItemsPressed, onPressed: _onDeleteItemsPressed,
icon: const Icon(Icons.delete)) icon: const Icon(Icons.delete))
@@ -161,7 +161,7 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
onTap: () => _itemTapped(index), onTap: () => _itemTapped(index),
itemSelectionChanged: (isSelected) => itemSelectionChanged: (isSelected) =>
_itemSelectionChanged(isSelected, index), _itemSelectionChanged(isSelected, index),
selectionMode: selectedItems.isNotEmpty, selectionMode: selectedItemIndexes.isNotEmpty,
); );
} }
@@ -175,14 +175,20 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
void _itemSelectionChanged(bool isSelected, int index) { void _itemSelectionChanged(bool isSelected, int index) {
if (isSelected) { if (isSelected) {
setState(() { setState(() {
selectedItems.add(index); selectedItemIndexes.add(index);
}); });
} else { } else {
setState(() { setState(() {
selectedItems.remove(index); selectedItemIndexes.remove(index);
}); });
} }
} }
void _onDeleteItemsPressed() {} void _onDeleteItemsPressed() {
List<int> itemIds = [];
for (final itemIndex in selectedItemIndexes) {
itemIds.add(_items.elementAt(itemIndex).id!);
}
DbHelper.deleteItemsById(itemIds);
}
} }

View File

@@ -144,6 +144,10 @@ class DbHelper {
await _client.from(itemsTableName).delete().eq('id', id); await _client.from(itemsTableName).delete().eq('id', id);
} }
static Future<void> deleteItemsById(List<int> ids) async {
await _client.from(itemsTableName).delete().in_('id', ids);
}
static Stream<AuthState> get authChangeEventStream => static Stream<AuthState> get authChangeEventStream =>
_client.auth.onAuthStateChange; _client.auth.onAuthStateChange;
} }