78 lines
2.0 KiB
Dart
78 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../models/listitem.dart';
|
|
import '../services/dbhelper.dart';
|
|
|
|
class ItemDetailDialog extends StatelessWidget {
|
|
const ItemDetailDialog({
|
|
super.key,
|
|
this.item,
|
|
required this.checklistId,
|
|
});
|
|
final Item? item;
|
|
final int checklistId;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final TextEditingController titleCon = TextEditingController();
|
|
final TextEditingController descCon = TextEditingController();
|
|
bool isOwner = true;
|
|
String dialogTitle = 'Add item';
|
|
|
|
if (item != null) {
|
|
titleCon.text = item!.title;
|
|
descCon.text = item!.description;
|
|
isOwner = DbHelper.isOwner(item!.ownerId);
|
|
isOwner ? dialogTitle = 'Edit Item' : dialogTitle = item!.title;
|
|
}
|
|
|
|
return AlertDialog(
|
|
title: Text(dialogTitle),
|
|
content: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
if (isOwner)
|
|
TextFormField(
|
|
controller: titleCon,
|
|
textInputAction: TextInputAction.next,
|
|
decoration: const InputDecoration(
|
|
label: Text('Title'),
|
|
),
|
|
),
|
|
if (isOwner)
|
|
TextFormField(
|
|
controller: descCon,
|
|
onFieldSubmitted: (value) {
|
|
_itemSaved(titleCon.text, descCon.text);
|
|
Navigator.of(context).pop();
|
|
},
|
|
decoration: const InputDecoration(
|
|
label: Text('Description'),
|
|
),
|
|
),
|
|
if (!isOwner) Text(item!.description),
|
|
],
|
|
),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () {
|
|
_itemSaved(titleCon.text, descCon.text);
|
|
Navigator.of(context).pop();
|
|
},
|
|
child: const Text('save'),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
|
|
void _itemSaved(String title, String description) {
|
|
DbHelper.addOrUpdateItem(
|
|
checklistId,
|
|
title,
|
|
description,
|
|
item?.id,
|
|
);
|
|
}
|
|
}
|