delete item implemented

This commit is contained in:
marcoabat
2023-08-06 17:08:39 +02:00
parent f320539daf
commit 23ad1ca28e
2 changed files with 27 additions and 6 deletions

View File

@@ -53,7 +53,7 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
height: 500,
child: ListView.builder(
itemCount: _items.length,
itemBuilder: _itemList,
itemBuilder: _itemListBuilder,
),
),
],
@@ -66,14 +66,25 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
}
void _addItemTapped() {
showDialog(context: context, builder: _addItemDialog);
showDialog(
context: context,
builder: (context) => _itemDetailDialog(context, null));
}
Widget _addItemDialog(BuildContext context) {
void _itemTapped(int index) {
_selectedItemId = _items.elementAt(index).id;
showDialog(
context: context,
builder: (context) => _itemDetailDialog(context, index)).whenComplete(
() => _selectedItemId = null,
);
}
Widget _itemDetailDialog(BuildContext context, int? index) {
TextEditingController titleCon = TextEditingController();
TextEditingController descCon = TextEditingController();
if (_selectedItemId != null) {
final item = _items.elementAt(_selectedItemId!);
final item = _items.elementAt(index!);
titleCon.text = item.title;
descCon.text = item.description;
}
@@ -97,6 +108,11 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
],
),
actions: [
if (_selectedItemId != null)
TextButton(
onPressed: () => DbHelper.deleteItemById(_selectedItemId!),
child: const Text('delete'),
),
TextButton(
onPressed: () {
_itemSaved(titleCon.text, descCon.text);
@@ -114,7 +130,7 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
title,
description,
_selectedItemId,
).onError((error, stackTrace) => print(error));
);
}
@override
@@ -134,10 +150,11 @@ class _DetailChecklistPageState extends State<DetailChecklistPage> {
);
}
Widget? _itemList(BuildContext context, int index) {
Widget? _itemListBuilder(BuildContext context, int index) {
return ListTile(
title: Text(_items.elementAt(index).title),
subtitle: Text(_items.elementAt(index).description),
onTap: () => _itemTapped(index),
);
}

View File

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