Add custom vendor contact fields

This commit is contained in:
Hillel Coren 2023-01-13 12:48:16 +02:00
parent eb7b2a9d26
commit 74440f34e6
1 changed files with 42 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.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/app/scrollable_listview.dart';
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_contacts_vm.dart';
@ -185,6 +186,10 @@ class VendorContactEditDetailsState extends State<VendorContactEditDetails> {
final _lastNameController = TextEditingController(); final _lastNameController = TextEditingController();
final _emailController = TextEditingController(); final _emailController = TextEditingController();
final _phoneController = TextEditingController(); final _phoneController = TextEditingController();
final _custom1Controller = TextEditingController();
final _custom2Controller = TextEditingController();
final _custom3Controller = TextEditingController();
final _custom4Controller = TextEditingController();
final _debouncer = Debouncer(); final _debouncer = Debouncer();
List<TextEditingController> _controllers = []; List<TextEditingController> _controllers = [];
@ -210,6 +215,10 @@ class VendorContactEditDetailsState extends State<VendorContactEditDetails> {
_lastNameController, _lastNameController,
_emailController, _emailController,
_phoneController, _phoneController,
_custom1Controller,
_custom2Controller,
_custom3Controller,
_custom4Controller,
]; ];
_controllers _controllers
@ -220,6 +229,10 @@ class VendorContactEditDetailsState extends State<VendorContactEditDetails> {
_lastNameController.text = contact.lastName; _lastNameController.text = contact.lastName;
_emailController.text = contact.email; _emailController.text = contact.email;
_phoneController.text = contact.phone; _phoneController.text = contact.phone;
_custom1Controller.text = contact.customValue1;
_custom2Controller.text = contact.customValue2;
_custom3Controller.text = contact.customValue3;
_custom4Controller.text = contact.customValue4;
_controllers _controllers
.forEach((dynamic controller) => controller.addListener(_onChanged)); .forEach((dynamic controller) => controller.addListener(_onChanged));
@ -242,7 +255,11 @@ class VendorContactEditDetailsState extends State<VendorContactEditDetails> {
..firstName = _firstNameController.text.trim() ..firstName = _firstNameController.text.trim()
..lastName = _lastNameController.text.trim() ..lastName = _lastNameController.text.trim()
..email = _emailController.text.trim() ..email = _emailController.text.trim()
..phone = _phoneController.text.trim()); ..phone = _phoneController.text.trim()
..customValue1 = _custom1Controller.text.trim()
..customValue2 = _custom2Controller.text.trim()
..customValue3 = _custom3Controller.text.trim()
..customValue4 = _custom4Controller.text.trim());
if (contact != widget.contact) { if (contact != widget.contact) {
_debouncer.run(() { _debouncer.run(() {
widget.viewModel.onChangedContact(contact, widget.index); widget.viewModel.onChangedContact(contact, widget.index);
@ -286,6 +303,30 @@ class VendorContactEditDetailsState extends State<VendorContactEditDetails> {
label: localization.phone, label: localization.phone,
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
), ),
CustomField(
controller: _custom1Controller,
field: CustomFieldType.vendorContact1,
value: widget.contact.customValue1,
onSavePressed: (_) => _onDoneContactPressed(),
),
CustomField(
controller: _custom2Controller,
field: CustomFieldType.vendorContact2,
value: widget.contact.customValue2,
onSavePressed: (_) => _onDoneContactPressed(),
),
CustomField(
controller: _custom3Controller,
field: CustomFieldType.vendorContact3,
value: widget.contact.customValue3,
onSavePressed: (_) => _onDoneContactPressed(),
),
CustomField(
controller: _custom4Controller,
field: CustomFieldType.vendorContact4,
value: widget.contact.customValue4,
onSavePressed: (_) => _onDoneContactPressed(),
),
], ],
); );