Add functionality to edit sheets with save and restore

This commit is contained in:
2025-11-15 22:26:33 +01:00
parent 31ecd3c820
commit 3edc3229e9
5 changed files with 202 additions and 3 deletions

View File

@@ -0,0 +1,70 @@
import 'package:flutter/material.dart';
import 'package:sheetless/sheet.dart';
typedef SheetEditedCallback = void Function(String newName, String newComposer);
class EditItemBottomSheet extends StatefulWidget {
final Sheet sheet;
final SheetEditedCallback onSheetEdited;
const EditItemBottomSheet({
super.key,
required this.sheet,
required this.onSheetEdited,
});
@override
State<EditItemBottomSheet> createState() => _EditItemBottomSheetState();
}
class _EditItemBottomSheetState extends State<EditItemBottomSheet> {
late TextEditingController sheetNameController;
late TextEditingController composerNameController;
@override
void initState() {
sheetNameController = TextEditingController(text: widget.sheet.name);
composerNameController = TextEditingController(
text: widget.sheet.composerName,
);
super.initState();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.fromLTRB(
16,
16,
16,
MediaQuery.of(context).viewInsets.bottom + 16,
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(
controller: sheetNameController,
decoration: InputDecoration(labelText: "Sheet"),
),
TextField(
controller: composerNameController,
decoration: InputDecoration(labelText: "Composer"),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
// TODO: check text fields are not empty
// TODO: save on pressing enter
widget.onSheetEdited(
sheetNameController.text,
composerNameController.text,
);
Navigator.pop(context);
},
child: Text("Save"),
),
],
),
);
}
}