Documents

This commit is contained in:
Hillel Coren 2023-08-13 16:36:24 +03:00
parent b743cf7b78
commit 86c653a090
1 changed files with 28 additions and 23 deletions

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
// Project imports:
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
import 'package:invoiceninja_flutter/ui/document/edit/document_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
@ -26,20 +27,20 @@ class _DocumentEditState extends State<DocumentEdit> {
GlobalKey<FormState>(debugLabel: '_documentEdit');
final _debouncer = Debouncer();
// STARTER: controllers - do not remove comment
final _nameController = TextEditingController();
List<TextEditingController> _controllers = [];
@override
void didChangeDependencies() {
_controllers = [
// STARTER: array - do not remove comment
_nameController,
];
_controllers.forEach((controller) => controller.removeListener(_onChanged));
//final document = widget.viewModel.document;
// STARTER: read value - do not remove comment
final document = widget.viewModel.document;
_nameController.text = document.name;
_controllers.forEach((controller) => controller.addListener(_onChanged));
@ -57,9 +58,8 @@ class _DocumentEditState extends State<DocumentEdit> {
}
void _onChanged() {
final document = widget.viewModel.document.rebuild((b) => b
// STARTER: set value - do not remove comment
);
final document = widget.viewModel.document
.rebuild((b) => b..name = _nameController.text.trim());
if (document != widget.viewModel.document) {
_debouncer.run(() {
widget.viewModel.onChanged(document);
@ -67,6 +67,16 @@ class _DocumentEditState extends State<DocumentEdit> {
}
}
void _onSavePressed() {
final bool isValid = _formKey.currentState.validate();
if (!isValid) {
return;
}
widget.viewModel.onSavePressed(context);
}
@override
Widget build(BuildContext context) {
final viewModel = widget.viewModel;
@ -77,21 +87,7 @@ class _DocumentEditState extends State<DocumentEdit> {
entity: document,
title:
document.isNew ? localization.newDocument : localization.editDocument,
onSavePressed: (context) {
final bool isValid = _formKey.currentState.validate();
/*
setState(() {
autoValidate = !isValid ?? false;
});
*/
if (!isValid) {
return;
}
viewModel.onSavePressed(context);
},
onSavePressed: (_) => _onSavePressed(),
body: Form(
key: _formKey,
child: Builder(builder: (BuildContext context) {
@ -99,7 +95,16 @@ class _DocumentEditState extends State<DocumentEdit> {
children: <Widget>[
FormCard(
children: <Widget>[
// STARTER: widgets - do not remove comment
DecoratedFormField(
autofocus: true,
label: localization.name,
keyboardType: TextInputType.text,
controller: _nameController,
onSavePressed: (_) => _onSavePressed(),
validator: (value) => value.trim().isEmpty
? localization.pleaseEnterAName
: null,
),
],
),
],