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