This commit is contained in:
Hillel Coren 2018-12-17 10:41:01 +02:00
parent 4ca0c613ab
commit 22a31a9da1
2 changed files with 84 additions and 73 deletions

View File

@ -71,7 +71,8 @@ class _ProjectEditState extends State<ProjectEdit> {
} }
void _onChanged() { void _onChanged() {
final project = widget.viewModel.project.rebuild((b) => b final project = widget.viewModel.project.rebuild((b) =>
b
..name = _nameController.text.trim() ..name = _nameController.text.trim()
..budgetedHours = parseDouble(_hoursController.text) ..budgetedHours = parseDouble(_hoursController.text)
..taskRate = parseDouble(_taskRateController.text) ..taskRate = parseDouble(_taskRateController.text)
@ -118,74 +119,82 @@ class _ProjectEditState extends State<ProjectEdit> {
), ),
body: Form( body: Form(
key: _formKey, key: _formKey,
child: ListView( child: Builder(builder: (BuildContext context) {
children: <Widget>[ return ListView(
FormCard( children: <Widget>[
children: <Widget>[ FormCard(
EntityDropdown( children: <Widget>[
entityType: EntityType.client, EntityDropdown(
labelText: localization.client, entityType: EntityType.client,
initialValue: (state.clientState.map[project.clientId] ?? labelText: localization.client,
ClientEntity()) initialValue: (state.clientState.map[project.clientId] ??
.displayName, ClientEntity())
entityMap: state.clientState.map, .displayName,
entityList: memoizedDropdownClientList( entityMap: state.clientState.map,
state.clientState.map, state.clientState.list), entityList: memoizedDropdownClientList(
validator: (String val) => val.trim().isEmpty state.clientState.map, state.clientState.list),
? localization.pleaseSelectAClient validator: (String val) =>
: null, val
onSelected: (clientId) { .trim()
viewModel.onChanged( .isEmpty
project.rebuild((b) => b..clientId = clientId)); ? localization.pleaseSelectAClient
}, : null,
onAddPressed: (completer) { onSelected: (clientId) {
viewModel.onAddClientPressed(context, completer); viewModel.onChanged(
}, project.rebuild((b) => b..clientId = clientId));
), },
TextFormField( onAddPressed: (completer) {
autocorrect: false, viewModel.onAddClientPressed(context, completer);
controller: _nameController, },
validator: (String val) => val.trim().isEmpty
? localization.pleaseEnterAName
: null,
decoration: InputDecoration(
labelText: localization.name,
), ),
), TextFormField(
DatePicker( autocorrect: false,
labelText: localization.dueDate, controller: _nameController,
selectedDate: project.dueDate, validator: (String val) =>
onSelected: (date) { val
viewModel .trim()
.onChanged(project.rebuild((b) => b..dueDate = date)); .isEmpty
}, ? localization.pleaseEnterAName
), : null,
TextFormField( decoration: InputDecoration(
keyboardType: TextInputType.number, labelText: localization.name,
controller: _hoursController, ),
decoration: InputDecoration(
labelText: localization.budgetedHours,
), ),
), DatePicker(
TextFormField( labelText: localization.dueDate,
keyboardType: TextInputType.number, selectedDate: project.dueDate,
controller: _taskRateController, onSelected: (date) {
decoration: InputDecoration( viewModel.onChanged(
labelText: localization.taskRate, project.rebuild((b) => b..dueDate = date));
},
), ),
), TextFormField(
TextFormField( keyboardType: TextInputType.number,
maxLines: 4, controller: _hoursController,
controller: _privateNotesController, decoration: InputDecoration(
keyboardType: TextInputType.multiline, labelText: localization.budgetedHours,
decoration: InputDecoration( ),
labelText: localization.privateNotes,
), ),
), TextFormField(
], keyboardType: TextInputType.number,
), controller: _taskRateController,
], decoration: InputDecoration(
), labelText: localization.taskRate,
),
),
TextFormField(
maxLines: 4,
controller: _privateNotesController,
keyboardType: TextInputType.multiline,
decoration: InputDecoration(
labelText: localization.privateNotes,
),
),
],
),
],
);
}),
), ),
), ),
); );

View File

@ -95,16 +95,18 @@ class _StubEditState extends State<StubEdit> {
], ],
), ),
body: Form( body: Form(
key: _formKey, key: _formKey,
child: ListView( child: Builder(builder: (BuildContext context) {
children: <Widget>[ return ListView(
FormCard(
children: <Widget>[ children: <Widget>[
// STARTER: widgets - do not remove comment FormCard(
children: <Widget>[
// STARTER: widgets - do not remove comment
],
),
], ],
), );
], })
),
), ),
), ),
); );