diff --git a/lib/editors/person.dart b/lib/editors/person.dart new file mode 100644 index 0000000..8deee41 --- /dev/null +++ b/lib/editors/person.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; + +import '../backend.dart'; +import '../database.dart'; + +class PersonEditor extends StatefulWidget { + final Person person; + + PersonEditor({ + this.person, + }); + + @override + _PersonEditorState createState() => _PersonEditorState(); +} + +class _PersonEditorState extends State { + final firstNameController = TextEditingController(); + final lastNameController = TextEditingController(); + + @override + void initState() { + super.initState(); + + if (widget.person != null) { + firstNameController.text = widget.person.firstName; + lastNameController.text = widget.person.lastName; + } + } + + @override + Widget build(BuildContext context) { + final backend = Backend.of(context); + + return Scaffold( + appBar: AppBar( + title: Text('Person'), + actions: [ + FlatButton( + child: Text('DONE'), + onPressed: () async { + final person = Person( + id: widget.person?.id ?? generateId(), + firstName: firstNameController.text, + lastName: lastNameController.text, + ); + + await backend.db.updatePerson(person); + Navigator.pop(context, person); + }, + ), + ], + ), + body: ListView( + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: TextField( + controller: firstNameController, + decoration: InputDecoration( + labelText: 'First name', + ), + ), + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: TextField( + controller: lastNameController, + decoration: InputDecoration( + labelText: 'Last name', + ), + ), + ), + ], + ), + ); + } +}