mass deletion of items
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user