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 createState() => _EditItemBottomSheetState(); } class _EditItemBottomSheetState extends State { 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"), ), ], ), ); } }