lockable items in templates

This commit is contained in:
andrei 2021-11-03 17:42:42 -04:00
parent 6b6c96ea43
commit 055fb7241d
1 changed files with 23 additions and 8 deletions

View File

@ -13,6 +13,7 @@ class CheckList extends StatefulWidget {
class _CheckList extends State<CheckList> { class _CheckList extends State<CheckList> {
_CheckList(this.id); _CheckList(this.id);
final int id; final int id;
bool _editable = false;
data.List? listData; data.List? listData;
List<data.Check> list = []; List<data.Check> list = [];
@ -36,6 +37,12 @@ class _CheckList extends State<CheckList> {
DBHelper.dbHelper.updateItem(item); DBHelper.dbHelper.updateItem(item);
} }
void _toggleEditable() {
setState(() {
_editable = !_editable;
});
}
@override @override
void initState() { void initState() {
_loadList(); _loadList();
@ -49,6 +56,13 @@ class _CheckList extends State<CheckList> {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text((listData != null) ? listData!.name : 'Check List: $id'), title: Text((listData != null) ? listData!.name : 'Check List: $id'),
actions: [
(listData != null && listData!.isTemplate! && !_editable)
? IconButton(
onPressed: () => _toggleEditable(), icon: Icon(Icons.edit))
: IconButton(
onPressed: () => _toggleEditable(), icon: Icon(Icons.save)),
],
), ),
body: ListView.builder( body: ListView.builder(
itemCount: list.length, itemCount: list.length,
@ -58,14 +72,15 @@ class _CheckList extends State<CheckList> {
title: Text(list[index].text), title: Text(list[index].text),
controlAffinity: ListTileControlAffinity.leading, controlAffinity: ListTileControlAffinity.leading,
value: list[index].value, value: list[index].value,
onChanged: (listData != null && !listData!.isTemplate!) onChanged:
? ((value) { (listData != null && (!listData!.isTemplate! || _editable))
_updateItem(list[index]); ? ((value) {
setState(() { _updateItem(list[index]);
list[index].value = value!; setState(() {
}); list[index].value = value!;
}) });
: null, })
: null,
), ),
); );
}, },