This commit is contained in:
Hillel Coren 2019-11-03 16:31:47 +02:00
parent 6f50130e17
commit d12787d7a3
48 changed files with 112 additions and 59 deletions

View File

@ -1026,7 +1026,6 @@ abstract class SettingsEntity
@BuiltValueField(wireName: 'email_template_reminder4') @BuiltValueField(wireName: 'email_template_reminder4')
String get emailBodyReminder4; String get emailBodyReminder4;
// TODO remove this field // TODO remove this field
@nullable @nullable
@BuiltValueField(wireName: 'custom_payment_terms') @BuiltValueField(wireName: 'custom_payment_terms')

View File

@ -314,7 +314,8 @@ abstract class InvoiceEntity extends Object
} }
if (response == 0) { if (response == 0) {
return (invoiceA.invoiceNumber ?? '').compareTo(invoiceB.invoiceNumber ?? ''); return (invoiceA.invoiceNumber ?? '')
.compareTo(invoiceB.invoiceNumber ?? '');
} else { } else {
return response; return response;
} }

View File

@ -60,12 +60,12 @@ class InvoiceRepository {
data: json.encode([ids])); data: json.encode([ids]));
break; break;
default: default:
// Might have other actions in the future // Might have other actions in the future
break; break;
} }
final InvoiceListResponse invoiceResponse = final InvoiceListResponse invoiceResponse =
serializers.deserializeWith(InvoiceListResponse.serializer, response); serializers.deserializeWith(InvoiceListResponse.serializer, response);
return invoiceResponse.data.toList(); return invoiceResponse.data.toList();
} }

View File

@ -47,12 +47,12 @@ class PaymentRepository {
data: json.encode([ids])); data: json.encode([ids]));
break; break;
default: default:
// Might have other actions in the future // Might have other actions in the future
break; break;
} }
final PaymentListResponse paymentResponse = final PaymentListResponse paymentResponse =
serializers.deserializeWith(PaymentListResponse.serializer, response); serializers.deserializeWith(PaymentListResponse.serializer, response);
return paymentResponse.data.toList(); return paymentResponse.data.toList();
} }

View File

@ -47,12 +47,12 @@ class ProductRepository {
data: json.encode([ids])); data: json.encode([ids]));
break; break;
default: default:
// Might have other actions in the future // Might have other actions in the future
break; break;
} }
final ProductListResponse productResponse = final ProductListResponse productResponse =
serializers.deserializeWith(ProductListResponse.serializer, response); serializers.deserializeWith(ProductListResponse.serializer, response);
return productResponse.data.toList(); return productResponse.data.toList();
} }

View File

@ -60,12 +60,12 @@ class QuoteRepository {
data: json.encode([ids])); data: json.encode([ids]));
break; break;
default: default:
// Might have other actions in the future // Might have other actions in the future
break; break;
} }
final InvoiceListResponse invoiceResponse = final InvoiceListResponse invoiceResponse =
serializers.deserializeWith(InvoiceListResponse.serializer, response); serializers.deserializeWith(InvoiceListResponse.serializer, response);
return invoiceResponse.data.toList(); return invoiceResponse.data.toList();
} }

View File

@ -159,7 +159,7 @@ String paymentStatsForUser(
int countArchived = 0; int countArchived = 0;
paymentMap.forEach((paymentId, payment) { paymentMap.forEach((paymentId, payment) {
if (invoiceMap.containsKey(payment.invoiceId)) if (invoiceMap.containsKey(payment.invoiceId))
// TODO enable this code // TODO enable this code
//&& invoiceMap[payment.invoiceId].userId == userId) //&& invoiceMap[payment.invoiceId].userId == userId)
{ {
if (payment.isActive) { if (payment.isActive) {

View File

@ -99,9 +99,9 @@ String quoteStatsForClient(
} }
var memoizedQuoteStatsForUser = memo4((String userId, var memoizedQuoteStatsForUser = memo4((String userId,
BuiltMap<String, InvoiceEntity> quoteMap, BuiltMap<String, InvoiceEntity> quoteMap,
String activeLabel, String activeLabel,
String archivedLabel) => String archivedLabel) =>
quoteStatsForUser(userId, quoteMap, activeLabel, archivedLabel)); quoteStatsForUser(userId, quoteMap, activeLabel, archivedLabel));
String quoteStatsForUser( String quoteStatsForUser(

View File

@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
import 'package:invoiceninja_flutter/ui/app/link_text.dart'; import 'package:invoiceninja_flutter/ui/app/link_text.dart';
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart'; import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
import 'package:invoiceninja_flutter/ui/auth/login_vm.dart'; import 'package:invoiceninja_flutter/ui/auth/login_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart';
@ -30,6 +31,7 @@ class LoginView extends StatefulWidget {
class _LoginState extends State<LoginView> { class _LoginState extends State<LoginView> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final _firstNameController = TextEditingController(); final _firstNameController = TextEditingController();
final _lastNameController = TextEditingController(); final _lastNameController = TextEditingController();

View File

@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/ui/client/edit/client_edit_notes.dart';
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_settings.dart'; import 'package:invoiceninja_flutter/ui/client/edit/client_edit_settings.dart';
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_shipping_address.dart'; import 'package:invoiceninja_flutter/ui/client/edit/client_edit_shipping_address.dart';
import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/client/edit/client_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -27,6 +28,7 @@ class _ClientEditState extends State<ClientEdit>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
TabController _controller; TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override @override
void initState() { void initState() {

View File

@ -170,4 +170,3 @@ class _ClientViewDetailsState extends State<ClientViewDetails> {
); );
} }
} }

View File

@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart'; import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
import 'package:invoiceninja_flutter/ui/company_gateway/edit/company_gateway_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/company_gateway/edit/company_gateway_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/strings.dart'; import 'package:invoiceninja_flutter/utils/strings.dart';
@ -31,6 +32,7 @@ class CompanyGatewayEdit extends StatefulWidget {
class _CompanyGatewayEditState extends State<CompanyGatewayEdit> class _CompanyGatewayEditState extends State<CompanyGatewayEdit>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final FocusScopeNode _focusNode = FocusScopeNode(); final FocusScopeNode _focusNode = FocusScopeNode();
TabController _controller; TabController _controller;

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/document/edit/document_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/document/edit/document_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -20,6 +21,7 @@ class DocumentEdit extends StatefulWidget {
class _DocumentEditState extends State<DocumentEdit> { class _DocumentEditState extends State<DocumentEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
// STARTER: controllers - do not remove comment // STARTER: controllers - do not remove comment

View File

@ -4,6 +4,7 @@ import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_details.dart';
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_notes.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_notes.dart';
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_settings.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_settings.dart';
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -24,6 +25,7 @@ class _ExpenseEditState extends State<ExpenseEdit>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
TabController _controller; TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override @override
void initState() { void initState() {

View File

@ -6,6 +6,7 @@ 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/group/edit/group_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/group/edit/group_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -23,6 +24,7 @@ class GroupEdit extends StatefulWidget {
class _GroupEditState extends State<GroupEdit> { class _GroupEditState extends State<GroupEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final _nameController = TextEditingController(); final _nameController = TextEditingController();
final _custom1Controller = TextEditingController(); final _custom1Controller = TextEditingController();

View File

@ -51,8 +51,7 @@ class InvoiceList extends StatelessWidget {
children: <Widget>[ children: <Widget>[
if (filteredEntity != null) if (filteredEntity != null)
ListFilterMessage( ListFilterMessage(
title: title: '$filteredMessage: ${filteredEntity.listDisplayName}',
'$filteredMessage: ${filteredEntity.listDisplayName}',
onPressed: viewModel.onViewEntityFilterPressed, onPressed: viewModel.onViewEntityFilterPressed,
onClearPressed: viewModel.onClearEntityFilterPressed, onClearPressed: viewModel.onClearEntityFilterPressed,
), ),

View File

@ -10,6 +10,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart'; import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
import 'package:invoiceninja_flutter/ui/payment/edit/payment_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/payment/edit/payment_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart'; import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
@ -29,6 +30,7 @@ class PaymentEdit extends StatefulWidget {
class _PaymentEditState extends State<PaymentEdit> { class _PaymentEditState extends State<PaymentEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final _amountController = TextEditingController(); final _amountController = TextEditingController();
final _transactionReferenceController = TextEditingController(); final _transactionReferenceController = TextEditingController();

View File

@ -52,8 +52,7 @@ class PaymentList extends StatelessWidget {
children: <Widget>[ children: <Widget>[
if (filteredEntity != null) if (filteredEntity != null)
ListFilterMessage( ListFilterMessage(
title: title: '$filteredMessage: ${filteredEntity.listDisplayName}',
'$filteredMessage: ${filteredEntity.listDisplayName}',
onPressed: viewModel.onViewEntityFilterPressed, onPressed: viewModel.onViewEntityFilterPressed,
onClearPressed: viewModel.onClearEntityFilterPressed, onClearPressed: viewModel.onClearEntityFilterPressed,
), ),

View File

@ -3,6 +3,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/forms/custom_field.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/invoice/tax_rate_dropdown.dart'; import 'package:invoiceninja_flutter/ui/app/invoice/tax_rate_dropdown.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -26,6 +27,7 @@ class ProductEdit extends StatefulWidget {
class _ProductEditState extends State<ProductEdit> { class _ProductEditState extends State<ProductEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/custom_field.dart';
import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart'; import 'package:invoiceninja_flutter/ui/app/forms/date_picker.dart';
import 'package:invoiceninja_flutter/ui/project/edit/project_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/project/edit/project_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -27,6 +28,7 @@ class ProjectEdit extends StatefulWidget {
class _ProjectEditState extends State<ProjectEdit> { class _ProjectEditState extends State<ProjectEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.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/decorated_form_field.dart'; import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
import 'package:invoiceninja_flutter/ui/settings/buy_now_buttons_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/buy_now_buttons_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -20,6 +21,7 @@ class BuyNowButtons extends StatefulWidget {
class _BuyNowButtonsState extends State<BuyNowButtons> { class _BuyNowButtonsState extends State<BuyNowButtons> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.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/settings/client_portal_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/client_portal_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/icons.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -28,6 +29,7 @@ class ClientPortal extends StatefulWidget {
class _ClientPortalState extends State<ClientPortal> class _ClientPortalState extends State<ClientPortal>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final FocusScopeNode _focusNode = FocusScopeNode(); final FocusScopeNode _focusNode = FocusScopeNode();
TabController _controller; TabController _controller;

View File

@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart';
import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart'; import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart';
import 'package:invoiceninja_flutter/ui/settings/company_details_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/company_details_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -30,6 +31,7 @@ class CompanyDetails extends StatefulWidget {
class _CompanyDetailsState extends State<CompanyDetails> class _CompanyDetailsState extends State<CompanyDetails>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final FocusScopeNode _focusNode = FocusScopeNode(); final FocusScopeNode _focusNode = FocusScopeNode();
TabController _controller; TabController _controller;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/credit_cards_and_banks_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/credit_cards_and_banks_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class CreditCardsAndBanks extends StatefulWidget { class CreditCardsAndBanks extends StatefulWidget {
@ -19,6 +20,7 @@ class CreditCardsAndBanks extends StatefulWidget {
class _CreditCardsAndBanksState extends State<CreditCardsAndBanks> class _CreditCardsAndBanksState extends State<CreditCardsAndBanks>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
TabController _controller; TabController _controller;

View File

@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.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/settings/custom_fields_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/custom_fields_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class CustomFields extends StatefulWidget { class CustomFields extends StatefulWidget {
@ -23,6 +24,7 @@ class CustomFields extends StatefulWidget {
class _CustomFieldsState extends State<CustomFields> class _CustomFieldsState extends State<CustomFields>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
FocusScopeNode _focusNode; FocusScopeNode _focusNode;
TabController _controller; TabController _controller;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/data_visualizations_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/data_visualizations_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class DataVisualizations extends StatefulWidget { class DataVisualizations extends StatefulWidget {
@ -18,6 +19,7 @@ class DataVisualizations extends StatefulWidget {
class _DataVisualizationsState extends State<DataVisualizations> { class _DataVisualizationsState extends State<DataVisualizations> {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -4,6 +4,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart';
import 'package:invoiceninja_flutter/ui/settings/device_settings_list_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/device_settings_list_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -21,6 +22,7 @@ class DeviceSettings extends StatefulWidget {
class _DeviceSettingsState extends State<DeviceSettings> { class _DeviceSettingsState extends State<DeviceSettings> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.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/settings/email_settings_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/email_settings_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class EmailSettings extends StatefulWidget { class EmailSettings extends StatefulWidget {
@ -25,6 +26,7 @@ class EmailSettings extends StatefulWidget {
class _EmailSettingsState extends State<EmailSettings> class _EmailSettingsState extends State<EmailSettings>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
TabController _tabController; TabController _tabController;
FocusScopeNode _focusNode; FocusScopeNode _focusNode;

View File

@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/date_picker.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/settings/generated_numbers_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/generated_numbers_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -26,6 +27,7 @@ class GeneratedNumbers extends StatefulWidget {
class _GeneratedNumbersState extends State<GeneratedNumbers> class _GeneratedNumbersState extends State<GeneratedNumbers>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
FocusScopeNode _focusNode; FocusScopeNode _focusNode;
TabController _controller; TabController _controller;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/import_export_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/import_export_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ImportExport extends StatefulWidget { class ImportExport extends StatefulWidget {
@ -18,6 +19,7 @@ class ImportExport extends StatefulWidget {
class _ImportExportState extends State<ImportExport> { class _ImportExportState extends State<ImportExport> {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart'; import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart';
import 'package:invoiceninja_flutter/ui/settings/invoice_design_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/invoice_design_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/fonts.dart'; import 'package:invoiceninja_flutter/utils/fonts.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -30,6 +31,7 @@ class InvoiceDesign extends StatefulWidget {
class _InvoiceDesignState extends State<InvoiceDesign> class _InvoiceDesignState extends State<InvoiceDesign>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
TabController _controller; TabController _controller;
FocusScopeNode _focusNode; FocusScopeNode _focusNode;

View File

@ -10,6 +10,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart'; import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
import 'package:invoiceninja_flutter/ui/settings/localization_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/localization_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -27,6 +28,7 @@ class LocalizationSettings extends StatefulWidget {
class _LocalizationSettingsState extends State<LocalizationSettings> { class _LocalizationSettingsState extends State<LocalizationSettings> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/notifications_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/notifications_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class NotificationSettings extends StatefulWidget { class NotificationSettings extends StatefulWidget {
@ -18,6 +19,7 @@ class NotificationSettings extends StatefulWidget {
class _NotificationSettingsState extends State<NotificationSettings> { class _NotificationSettingsState extends State<NotificationSettings> {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/online_payments_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/online_payments_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class OnlinePayments extends StatefulWidget { class OnlinePayments extends StatefulWidget {
@ -18,8 +19,6 @@ class OnlinePayments extends StatefulWidget {
class _OnlinePaymentsState extends State<OnlinePayments> class _OnlinePaymentsState extends State<OnlinePayments>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
TabController _controller; TabController _controller;
bool autoValidate = false; bool autoValidate = false;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/ui/settings/tax_rates_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/tax_rates_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class TaxRates extends StatefulWidget { class TaxRates extends StatefulWidget {
@ -19,6 +20,7 @@ class TaxRates extends StatefulWidget {
class _TaxRatesState extends State<TaxRates> class _TaxRatesState extends State<TaxRates>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); //static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
TabController _controller; TabController _controller;

View File

@ -37,7 +37,6 @@ class _TemplatesAndRemindersState extends State<TemplatesAndReminders>
FocusScopeNode _focusNode; FocusScopeNode _focusNode;
TabController _controller; TabController _controller;
final _subjectController = TextEditingController(); final _subjectController = TextEditingController();
final _bodyController = TextEditingController(); final _bodyController = TextEditingController();

View File

@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.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/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/ui/settings/user_details_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/user_details_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class UserDetails extends StatefulWidget { class UserDetails extends StatefulWidget {
@ -21,6 +22,7 @@ class UserDetails extends StatefulWidget {
class _UserDetailsState extends State<UserDetails> { class _UserDetailsState extends State<UserDetails> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -6,6 +6,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart'; import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/ui/settings/workflow_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/workflow_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class WorkflowSettings extends StatefulWidget { class WorkflowSettings extends StatefulWidget {
@ -23,6 +24,7 @@ class WorkflowSettings extends StatefulWidget {
class _WorkflowSettingsState extends State<WorkflowSettings> class _WorkflowSettingsState extends State<WorkflowSettings>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
FocusScopeNode _focusNode; FocusScopeNode _focusNode;
TabController _controller; TabController _controller;

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details_vm.dart'; import 'package:invoiceninja_flutter/ui/task/edit/task_edit_details_vm.dart';
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_times_vm.dart'; import 'package:invoiceninja_flutter/ui/task/edit/task_edit_times_vm.dart';
import 'package:invoiceninja_flutter/ui/task/edit/task_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/task/edit/task_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
@ -27,6 +28,7 @@ class _TaskEditState extends State<TaskEdit>
TabController _controller; TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
static const kDetailsScreen = 0; static const kDetailsScreen = 0;
static const kTimesScreen = 1; static const kTimesScreen = 1;

View File

@ -47,8 +47,7 @@ class TaskList extends StatelessWidget {
children: <Widget>[ children: <Widget>[
if (filteredEntity != null) if (filteredEntity != null)
ListFilterMessage( ListFilterMessage(
title: title: '$filteredMessage: ${filteredEntity.listDisplayName}',
'$filteredMessage: ${filteredEntity.listDisplayName}',
onPressed: viewModel.onViewEntityFilterPressed, onPressed: viewModel.onViewEntityFilterPressed,
onClearPressed: viewModel.onClearEntityFilterPressed, onClearPressed: viewModel.onClearEntityFilterPressed,
), ),

View File

@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.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/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/ui/tax_rate/edit/tax_rate_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/tax_rate/edit/tax_rate_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -22,6 +23,7 @@ class TaxRateEdit extends StatefulWidget {
class _TaxRateEditState extends State<TaxRateEdit> { class _TaxRateEditState extends State<TaxRateEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_form.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/user/edit/user_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/user/edit/user_edit_vm.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -22,6 +23,7 @@ class UserEdit extends StatefulWidget {
class _UserEditState extends State<UserEdit> { class _UserEditState extends State<UserEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false; bool autoValidate = false;

View File

@ -103,36 +103,36 @@ class UserView extends StatelessWidget {
localization.active, localization.active,
localization.archived), localization.archived),
), ),
EntityListTile( EntityListTile(
bottomPadding: 1, bottomPadding: 1,
icon: getEntityIcon(EntityType.payment), icon: getEntityIcon(EntityType.payment),
title: localization.payments, title: localization.payments,
onTap: () => viewModel.onEntityPressed(context, EntityType.payment), onTap: () => viewModel.onEntityPressed(context, EntityType.payment),
onLongPress: () => onLongPress: () =>
viewModel.onEntityPressed(context, EntityType.payment, true), viewModel.onEntityPressed(context, EntityType.payment, true),
subtitle: memoizedPaymentStatsForUser( subtitle: memoizedPaymentStatsForUser(
user.id, user.id,
state.paymentState.map, state.paymentState.map,
state.invoiceState.map, state.invoiceState.map,
localization.active, localization.active,
localization.archived), localization.archived),
), ),
company.isModuleEnabled(EntityType.quote) company.isModuleEnabled(EntityType.quote)
? EntityListTile( ? EntityListTile(
bottomPadding: 1, bottomPadding: 1,
icon: getEntityIcon(EntityType.quote), icon: getEntityIcon(EntityType.quote),
title: localization.quotes, title: localization.quotes,
onTap: () => onTap: () =>
viewModel.onEntityPressed(context, EntityType.quote), viewModel.onEntityPressed(context, EntityType.quote),
onLongPress: () => onLongPress: () => viewModel.onEntityPressed(
viewModel.onEntityPressed(context, EntityType.quote, true), context, EntityType.quote, true),
subtitle: memoizedQuoteStatsForUser( subtitle: memoizedQuoteStatsForUser(
user.id, user.id,
state.quoteState.map, state.quoteState.map,
localization.active, localization.active,
localization.archived), localization.archived),
) )
: Container(), : Container(),
/* /*
company.isModuleEnabled(EntityType.project) company.isModuleEnabled(EntityType.project)
? EntityListTile( ? EntityListTile(

View File

@ -5,6 +5,7 @@ import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_contacts_vm.dart
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_details.dart'; import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_details.dart';
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_notes.dart'; import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_notes.dart';
import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/vendor/edit/vendor_edit_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -25,6 +26,7 @@ class _VendorEditState extends State<VendorEdit>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
TabController _controller; TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override @override
void initState() { void initState() {

View File

@ -15432,15 +15432,14 @@ mixin LocalizationsProvider on LocaleCodeAware {
String get afterDueDate => _localizedValues[localeCode]['after_due_date']; String get afterDueDate => _localizedValues[localeCode]['after_due_date'];
String get afterInvoiceDate => _localizedValues[localeCode]['after_invoice_date']; String get afterInvoiceDate =>
_localizedValues[localeCode]['after_invoice_date'];
String get schedule => _localizedValues[localeCode]['schedule']; String get schedule => _localizedValues[localeCode]['schedule'];
String get lateFeeAmount => _localizedValues[localeCode]['late_fee_amount']; String get lateFeeAmount => _localizedValues[localeCode]['late_fee_amount'];
String get lateFeePercent => _localizedValues[localeCode]['late_fee_percent']; String get lateFeePercent => _localizedValues[localeCode]['late_fee_percent'];
String lookup(String key) { String lookup(String key) {
final lookupKey = toSnakeCase(key); final lookupKey = toSnakeCase(key);
return _localizedValues[localeCode][lookupKey] ?? return _localizedValues[localeCode][lookupKey] ??

View File

@ -24,6 +24,7 @@ class MyApp extends StatefulWidget {
class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin { class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
static final GlobalKey<ClientPageState> _clientKey = static final GlobalKey<ClientPageState> _clientKey =
GlobalKey<ClientPageState>(); GlobalKey<ClientPageState>();
static final GlobalKey<ContactsPageState> _contactsKey = static final GlobalKey<ContactsPageState> _contactsKey =

View File

@ -20,6 +20,7 @@ class StubEdit extends StatefulWidget {
class _StubEditState extends State<StubEdit> { class _StubEditState extends State<StubEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
// STARTER: controllers - do not remove comment // STARTER: controllers - do not remove comment