Specify keyboard types

This commit is contained in:
Hillel Coren 2021-11-29 14:43:46 +02:00
parent 4ba4d9f69b
commit 4d76ae59ab
13 changed files with 58 additions and 3 deletions

View File

@ -119,7 +119,7 @@ class ClientEditBillingAddressState extends State<ClientEditBillingAddress> {
controller: _address2Controller, controller: _address2Controller,
label: localization.address2, label: localization.address2,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.streetAddress, keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
autocorrect: false, autocorrect: false,

View File

@ -118,7 +118,7 @@ class ClientEditShippingAddressState extends State<ClientEditShippingAddress> {
controller: _shippingAddress2Controller, controller: _shippingAddress2Controller,
label: localization.address2, label: localization.address2,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.streetAddress, keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
controller: _shippingCityController, controller: _shippingCityController,

View File

@ -307,6 +307,7 @@ class _ClientPortalState extends State<ClientPortal>
label: localization.subdomain, label: localization.subdomain,
autovalidate: _autoValidate, autovalidate: _autoValidate,
controller: _subdomainController, controller: _subdomainController,
keyboardType: TextInputType.text,
hint: localization.subdomainHelp, hint: localization.subdomainHelp,
validator: (value) { validator: (value) {
if (value.isEmpty) { if (value.isEmpty) {
@ -445,11 +446,13 @@ class _ClientPortalState extends State<ClientPortal>
controller: _termsController, controller: _termsController,
label: localization.termsOfService, label: localization.termsOfService,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
controller: _privacyController, controller: _privacyController,
label: localization.privacyPolicy, label: localization.privacyPolicy,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
], ],
) )
@ -582,21 +585,25 @@ class _ClientPortalState extends State<ClientPortal>
controller: _customMessageDashboard, controller: _customMessageDashboard,
label: localization.dashboard, label: localization.dashboard,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
controller: _customMessageUnpaidInvoice, controller: _customMessageUnpaidInvoice,
label: localization.unpaidInvoice, label: localization.unpaidInvoice,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
controller: _customMessagePaidInvoice, controller: _customMessagePaidInvoice,
label: localization.paidInvoice, label: localization.paidInvoice,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
controller: _customMessageUnapprovedQuote, controller: _customMessageUnapprovedQuote,
label: localization.unapprovedQuote, label: localization.unapprovedQuote,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
], ],
), ),
@ -611,22 +618,26 @@ class _ClientPortalState extends State<ClientPortal>
label: localization.header, label: localization.header,
controller: _customHeaderController, controller: _customHeaderController,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.footer, label: localization.footer,
controller: _customFooterController, controller: _customFooterController,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.customCss, label: localization.customCss,
controller: _customCssController, controller: _customCssController,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
if (isSelfHosted(context)) if (isSelfHosted(context))
DecoratedFormField( DecoratedFormField(
label: localization.customJavascript, label: localization.customJavascript,
controller: _customJavaScriptController, controller: _customJavaScriptController,
maxLines: 6, maxLines: 6,
keyboardType: TextInputType.multiline,
), ),
], ],
) )

View File

@ -256,21 +256,25 @@ class _CompanyDetailsState extends State<CompanyDetails>
: null, : null,
autovalidate: autoValidate, autovalidate: autoValidate,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.name,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.idNumber, label: localization.idNumber,
controller: _idNumberController, controller: _idNumberController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.vatNumber, label: localization.vatNumber,
controller: _vatNumberController, controller: _vatNumberController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.website, label: localization.website,
controller: _websiteController, controller: _websiteController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.url,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.email, label: localization.email,
@ -356,30 +360,35 @@ class _CompanyDetailsState extends State<CompanyDetails>
controller: _address1Controller, controller: _address1Controller,
autofillHints: [AutofillHints.streetAddressLine1], autofillHints: [AutofillHints.streetAddressLine1],
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.streetAddress,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.address2, label: localization.address2,
controller: _address2Controller, controller: _address2Controller,
autofillHints: [AutofillHints.streetAddressLine2], autofillHints: [AutofillHints.streetAddressLine2],
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.city, label: localization.city,
controller: _cityController, controller: _cityController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
autofillHints: [AutofillHints.addressCity], autofillHints: [AutofillHints.addressCity],
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.state, label: localization.state,
controller: _stateController, controller: _stateController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
autofillHints: [AutofillHints.addressState], autofillHints: [AutofillHints.addressState],
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.postalCode, label: localization.postalCode,
controller: _postalCodeController, controller: _postalCodeController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
autofillHints: [AutofillHints.postalCode], autofillHints: [AutofillHints.postalCode],
keyboardType: TextInputType.text,
), ),
EntityDropdown( EntityDropdown(
entityType: EntityType.country, entityType: EntityType.country,
@ -597,11 +606,13 @@ class _CompanyDetailsState extends State<CompanyDetails>
label: localization.invoiceTerms, label: localization.invoiceTerms,
controller: _invoiceTermsController, controller: _invoiceTermsController,
maxLines: 4, maxLines: 4,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.invoiceFooter, label: localization.invoiceFooter,
controller: _invoiceFooterController, controller: _invoiceFooterController,
maxLines: 4, maxLines: 4,
keyboardType: TextInputType.multiline,
), ),
], ],
if (company.isModuleEnabled(EntityType.quote)) ...[ if (company.isModuleEnabled(EntityType.quote)) ...[
@ -609,11 +620,13 @@ class _CompanyDetailsState extends State<CompanyDetails>
label: localization.quoteTerms, label: localization.quoteTerms,
controller: _quoteTermsController, controller: _quoteTermsController,
maxLines: 4, maxLines: 4,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.quoteFooter, label: localization.quoteFooter,
controller: _quoteFooterController, controller: _quoteFooterController,
maxLines: 4, maxLines: 4,
keyboardType: TextInputType.multiline,
), ),
], ],
if (company.isModuleEnabled(EntityType.credit)) ...[ if (company.isModuleEnabled(EntityType.credit)) ...[
@ -621,11 +634,13 @@ class _CompanyDetailsState extends State<CompanyDetails>
label: localization.creditTerms, label: localization.creditTerms,
controller: _creditTermsController, controller: _creditTermsController,
maxLines: 4, maxLines: 4,
keyboardType: TextInputType.multiline,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.creditFooter, label: localization.creditFooter,
controller: _creditFooterController, controller: _creditFooterController,
maxLines: 4, maxLines: 4,
keyboardType: TextInputType.multiline,
), ),
], ],
], ],

View File

@ -405,6 +405,7 @@ class _CustomFormFieldState extends State<CustomFormField> {
child: DecoratedFormField( child: DecoratedFormField(
label: widget.label, label: widget.label,
controller: _customFieldController, controller: _customFieldController,
keyboardType: TextInputType.name,
), ),
), ),
if (widget.showTaxes) ...[ if (widget.showTaxes) ...[
@ -473,6 +474,7 @@ class _CustomFormFieldState extends State<CustomFormField> {
label: localization.options, label: localization.options,
controller: _optionsController, controller: _optionsController,
hint: localization.commaSeparatedList, hint: localization.commaSeparatedList,
keyboardType: TextInputType.text,
), ),
), ),
SizedBox(height: 16), SizedBox(height: 16),

View File

@ -214,11 +214,13 @@ class _EmailSettingsState extends State<EmailSettings> {
label: localization.fromName, label: localization.fromName,
controller: _fromNameController, controller: _fromNameController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.name,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.replyToName, label: localization.replyToName,
controller: _replyToNameController, controller: _replyToNameController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.name,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.replyToEmail, label: localization.replyToEmail,

View File

@ -284,6 +284,7 @@ class _GeneratedNumbersState extends State<GeneratedNumbers>
DecoratedFormField( DecoratedFormField(
label: localization.recurringPrefix, label: localization.recurringPrefix,
controller: _recurringPrefixController, controller: _recurringPrefixController,
keyboardType: TextInputType.text,
), ),
if (company.isModuleEnabled(EntityType.quote)) if (company.isModuleEnabled(EntityType.quote))
BoolDropdownButton( BoolDropdownButton(
@ -527,10 +528,12 @@ class _EntityNumberSettingsState extends State<EntityNumberSettings> {
DecoratedFormField( DecoratedFormField(
label: localization.numberPattern, label: localization.numberPattern,
controller: _patternController, controller: _patternController,
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.numberCounter, label: localization.numberCounter,
controller: _counterController, controller: _counterController,
keyboardType: TextInputType.number,
), ),
], ],
), ),

View File

@ -295,6 +295,7 @@ class _FileImportState extends State<_FileImport> {
final field = DecoratedFormField( final field = DecoratedFormField(
enabled: false, enabled: false,
keyboardType: TextInputType.text,
key: ValueKey(uploadPart.key + key: ValueKey(uploadPart.key +
(multipartFile != null ? multipartFile.filename : '')), (multipartFile != null ? multipartFile.filename : '')),
label: localization.lookup(uploadPart.value), label: localization.lookup(uploadPart.value),

View File

@ -149,6 +149,8 @@ class _OnlinePaymentsState extends State<OnlinePayments> {
label: localization.minimumUnderPaymentAmount, label: localization.minimumUnderPaymentAmount,
controller: _minimumAmountController, controller: _minimumAmountController,
isMoney: true, isMoney: true,
keyboardType: TextInputType.numberWithOptions(
decimal: true, signed: true),
), ),
), ),
]), ]),

View File

@ -3,6 +3,7 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
// Flutter imports: // Flutter imports:
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -229,12 +230,15 @@ class _SettingsWizardState extends State<SettingsWizard> {
controller: _nameController, controller: _nameController,
validator: (value) => validator: (value) =>
value.isEmpty ? localization.pleaseEnterAValue : null, value.isEmpty ? localization.pleaseEnterAValue : null,
keyboardType: TextInputType.name,
); );
final firstName = DecoratedFormField( final firstName = DecoratedFormField(
label: localization.firstName, label: localization.firstName,
autovalidate: _autoValidate, autovalidate: _autoValidate,
controller: _firstNameController, controller: _firstNameController,
keyboardType: TextInputType.text,
autofillHints: [AutofillHints.givenName],
validator: (value) => validator: (value) =>
value.isEmpty ? localization.pleaseEnterAValue : null, value.isEmpty ? localization.pleaseEnterAValue : null,
); );
@ -243,6 +247,8 @@ class _SettingsWizardState extends State<SettingsWizard> {
label: localization.lastName, label: localization.lastName,
autovalidate: _autoValidate, autovalidate: _autoValidate,
controller: _lastNameController, controller: _lastNameController,
keyboardType: TextInputType.text,
autofillHints: [AutofillHints.familyName],
validator: (value) => validator: (value) =>
value.isEmpty ? localization.pleaseEnterAValue : null, value.isEmpty ? localization.pleaseEnterAValue : null,
); );
@ -304,6 +310,7 @@ class _SettingsWizardState extends State<SettingsWizard> {
label: localization.subdomain, label: localization.subdomain,
autovalidate: _autoValidate, autovalidate: _autoValidate,
controller: _subdomainController, controller: _subdomainController,
keyboardType: TextInputType.text,
validator: (value) { validator: (value) {
if (value.isEmpty) { if (value.isEmpty) {
return localization.pleaseEnterAValue; return localization.pleaseEnterAValue;

View File

@ -100,6 +100,8 @@ class _TaskSettingsState extends State<TaskSettings> {
label: localization.defaultTaskRate, label: localization.defaultTaskRate,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
isMoney: true, isMoney: true,
keyboardType:
TextInputType.numberWithOptions(decimal: true, signed: true),
), ),
if (!viewModel.state.settingsUIState.isFiltered) ...[ if (!viewModel.state.settingsUIState.isFiltered) ...[
SizedBox(height: 32), SizedBox(height: 32),

View File

@ -309,12 +309,13 @@ class _TemplatesAndRemindersState extends State<TemplatesAndReminders>
label: localization.subject, label: localization.subject,
controller: _subjectController, controller: _subjectController,
hint: _defaultSubject, hint: _defaultSubject,
keyboardType: TextInputType.text,
), ),
DecoratedFormField( DecoratedFormField(
keyboardType: TextInputType.multiline,
label: localization.body, label: localization.body,
controller: _bodyController, controller: _bodyController,
maxLines: 8, maxLines: 8,
keyboardType: TextInputType.multiline,
hint: _defaultBody, hint: _defaultBody,
), ),
]), ]),
@ -554,11 +555,15 @@ class _ReminderSettingsState extends State<ReminderSettings> {
label: localization.lateFeeAmount, label: localization.lateFeeAmount,
controller: _feeAmountController, controller: _feeAmountController,
isMoney: true, isMoney: true,
keyboardType:
TextInputType.numberWithOptions(decimal: true, signed: true),
), ),
DecoratedFormField( DecoratedFormField(
label: localization.lateFeePercent, label: localization.lateFeePercent,
controller: _feePercentController, controller: _feePercentController,
isPercent: true, isPercent: true,
keyboardType:
TextInputType.numberWithOptions(decimal: true, signed: true),
), ),
], ],
), ),

View File

@ -183,6 +183,7 @@ class _UserDetailsState extends State<UserDetails>
: null, : null,
autovalidate: autoValidate, autovalidate: autoValidate,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.name,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.lastName, label: localization.lastName,
@ -192,6 +193,7 @@ class _UserDetailsState extends State<UserDetails>
: null, : null,
autovalidate: autoValidate, autovalidate: autoValidate,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.name,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.email, label: localization.email,
@ -201,11 +203,13 @@ class _UserDetailsState extends State<UserDetails>
: null, : null,
autovalidate: autoValidate, autovalidate: autoValidate,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.emailAddress,
), ),
DecoratedFormField( DecoratedFormField(
label: localization.phone, label: localization.phone,
controller: _phoneController, controller: _phoneController,
onSavePressed: viewModel.onSavePressed, onSavePressed: viewModel.onSavePressed,
keyboardType: TextInputType.phone,
), ),
PasswordFormField( PasswordFormField(
controller: _passwordController, controller: _passwordController,
@ -500,6 +504,7 @@ class _EnableTwoFactorState extends State<_EnableTwoFactor> {
validator: (value) => value.isEmpty validator: (value) => value.isEmpty
? AppLocalization.of(context).pleaseEnterAValue ? AppLocalization.of(context).pleaseEnterAValue
: null, : null,
keyboardType: TextInputType.number,
onSavePressed: (context) => _onSavePressed(), onSavePressed: (context) => _onSavePressed(),
), ),
), ),