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')
String get emailBodyReminder4;
// TODO remove this field
@nullable
@BuiltValueField(wireName: 'custom_payment_terms')

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -99,9 +99,9 @@ String quoteStatsForClient(
}
var memoizedQuoteStatsForUser = memo4((String userId,
BuiltMap<String, InvoiceEntity> quoteMap,
String activeLabel,
String archivedLabel) =>
BuiltMap<String, InvoiceEntity> quoteMap,
String activeLabel,
String archivedLabel) =>
quoteStatsForUser(userId, quoteMap, activeLabel, archivedLabel));
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/loading_indicator.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/localization.dart';
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
@ -30,6 +31,7 @@ class LoginView extends StatefulWidget {
class _LoginState extends State<LoginView> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final _firstNameController = 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_shipping_address.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/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -27,6 +28,7 @@ class _ClientEditState extends State<ClientEdit>
with SingleTickerProviderStateMixin {
TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override
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/company_gateway/edit/company_gateway_edit_vm.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/localization.dart';
import 'package:invoiceninja_flutter/utils/strings.dart';
@ -31,6 +32,7 @@ class CompanyGatewayEdit extends StatefulWidget {
class _CompanyGatewayEditState extends State<CompanyGatewayEdit>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final FocusScopeNode _focusNode = FocusScopeNode();
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/document/edit/document_edit_vm.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/platforms.dart';
@ -20,6 +21,7 @@ class DocumentEdit extends StatefulWidget {
class _DocumentEditState extends State<DocumentEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
// 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_settings.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/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -24,6 +25,7 @@ class _ExpenseEditState extends State<ExpenseEdit>
with SingleTickerProviderStateMixin {
TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override
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/group/edit/group_edit_vm.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/platforms.dart';
@ -23,6 +24,7 @@ class GroupEdit extends StatefulWidget {
class _GroupEditState extends State<GroupEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final _nameController = TextEditingController();
final _custom1Controller = TextEditingController();

View File

@ -51,8 +51,7 @@ class InvoiceList extends StatelessWidget {
children: <Widget>[
if (filteredEntity != null)
ListFilterMessage(
title:
'$filteredMessage: ${filteredEntity.listDisplayName}',
title: '$filteredMessage: ${filteredEntity.listDisplayName}',
onPressed: viewModel.onViewEntityFilterPressed,
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/payment/edit/payment_edit_vm.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/localization.dart';
import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart';
@ -29,6 +30,7 @@ class PaymentEdit extends StatefulWidget {
class _PaymentEditState extends State<PaymentEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final _amountController = TextEditingController();
final _transactionReferenceController = TextEditingController();

View File

@ -52,8 +52,7 @@ class PaymentList extends StatelessWidget {
children: <Widget>[
if (filteredEntity != null)
ListFilterMessage(
title:
'$filteredMessage: ${filteredEntity.listDisplayName}',
title: '$filteredMessage: ${filteredEntity.listDisplayName}',
onPressed: viewModel.onViewEntityFilterPressed,
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/decorated_form_field.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:flutter/foundation.dart';
import 'package:flutter/material.dart';
@ -26,6 +27,7 @@ class ProductEdit extends StatefulWidget {
class _ProductEditState extends State<ProductEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/project/edit/project_edit_vm.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/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -27,6 +28,7 @@ class ProjectEdit extends StatefulWidget {
class _ProjectEditState extends State<ProjectEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/forms/decorated_form_field.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/platforms.dart';
@ -20,6 +21,7 @@ class BuyNowButtons extends StatefulWidget {
class _BuyNowButtonsState extends State<BuyNowButtons> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/settings/client_portal_vm.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/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -28,6 +29,7 @@ class ClientPortal extends StatefulWidget {
class _ClientPortalState extends State<ClientPortal>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final FocusScopeNode _focusNode = FocusScopeNode();
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/settings/company_details_vm.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/localization.dart';
@ -30,6 +31,7 @@ class CompanyDetails extends StatefulWidget {
class _CompanyDetailsState extends State<CompanyDetails>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
final FocusScopeNode _focusNode = FocusScopeNode();
TabController _controller;

View File

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

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/data_visualizations_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class DataVisualizations extends StatefulWidget {
@ -18,6 +19,7 @@ class DataVisualizations extends StatefulWidget {
class _DataVisualizationsState extends State<DataVisualizations> {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/ui/app/form_card.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/platforms.dart';
@ -21,6 +22,7 @@ class DeviceSettings extends StatefulWidget {
class _DeviceSettingsState extends State<DeviceSettings> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override
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/settings/email_settings_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class EmailSettings extends StatefulWidget {
@ -25,6 +26,7 @@ class EmailSettings extends StatefulWidget {
class _EmailSettingsState extends State<EmailSettings>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
TabController _tabController;
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/settings/generated_numbers_vm.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/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -26,6 +27,7 @@ class GeneratedNumbers extends StatefulWidget {
class _GeneratedNumbersState extends State<GeneratedNumbers>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
FocusScopeNode _focusNode;
TabController _controller;

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/settings/import_export_vm.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class ImportExport extends StatefulWidget {
@ -18,6 +19,7 @@ class ImportExport extends StatefulWidget {
class _ImportExportState extends State<ImportExport> {
//static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/settings/invoice_design_vm.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/localization.dart';
@ -30,6 +31,7 @@ class InvoiceDesign extends StatefulWidget {
class _InvoiceDesignState extends State<InvoiceDesign>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
TabController _controller;
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/settings/localization_vm.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/localization.dart';
@ -27,6 +28,7 @@ class LocalizationSettings extends StatefulWidget {
class _LocalizationSettingsState extends State<LocalizationSettings> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false;

View File

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

View File

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

View File

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

View File

@ -37,7 +37,6 @@ class _TemplatesAndRemindersState extends State<TemplatesAndReminders>
FocusScopeNode _focusNode;
TabController _controller;
final _subjectController = 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/settings/settings_scaffold.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';
class UserDetails extends StatefulWidget {
@ -21,6 +22,7 @@ class UserDetails extends StatefulWidget {
class _UserDetailsState extends State<UserDetails> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/settings/settings_scaffold.dart';
import 'package:invoiceninja_flutter/ui/settings/workflow_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
class WorkflowSettings extends StatefulWidget {
@ -23,6 +24,7 @@ class WorkflowSettings extends StatefulWidget {
class _WorkflowSettingsState extends State<WorkflowSettings>
with SingleTickerProviderStateMixin {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
FocusScopeNode _focusNode;
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_times_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/localization.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_icon_button.dart';
@ -27,6 +28,7 @@ class _TaskEditState extends State<TaskEdit>
TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
static const kDetailsScreen = 0;
static const kTimesScreen = 1;

View File

@ -47,8 +47,7 @@ class TaskList extends StatelessWidget {
children: <Widget>[
if (filteredEntity != null)
ListFilterMessage(
title:
'$filteredMessage: ${filteredEntity.listDisplayName}',
title: '$filteredMessage: ${filteredEntity.listDisplayName}',
onPressed: viewModel.onViewEntityFilterPressed,
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/settings/settings_scaffold.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/localization.dart';
@ -22,6 +23,7 @@ class TaxRateEdit extends StatefulWidget {
class _TaxRateEditState extends State<TaxRateEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
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/user/edit/user_edit_vm.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/platforms.dart';
@ -22,6 +23,7 @@ class UserEdit extends StatefulWidget {
class _UserEditState extends State<UserEdit> {
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
bool autoValidate = false;

View File

@ -103,36 +103,36 @@ class UserView extends StatelessWidget {
localization.active,
localization.archived),
),
EntityListTile(
bottomPadding: 1,
icon: getEntityIcon(EntityType.payment),
title: localization.payments,
onTap: () => viewModel.onEntityPressed(context, EntityType.payment),
onLongPress: () =>
viewModel.onEntityPressed(context, EntityType.payment, true),
subtitle: memoizedPaymentStatsForUser(
user.id,
state.paymentState.map,
state.invoiceState.map,
localization.active,
localization.archived),
),
company.isModuleEnabled(EntityType.quote)
? EntityListTile(
bottomPadding: 1,
icon: getEntityIcon(EntityType.quote),
title: localization.quotes,
onTap: () =>
viewModel.onEntityPressed(context, EntityType.quote),
onLongPress: () =>
viewModel.onEntityPressed(context, EntityType.quote, true),
subtitle: memoizedQuoteStatsForUser(
user.id,
state.quoteState.map,
localization.active,
localization.archived),
)
: Container(),
EntityListTile(
bottomPadding: 1,
icon: getEntityIcon(EntityType.payment),
title: localization.payments,
onTap: () => viewModel.onEntityPressed(context, EntityType.payment),
onLongPress: () =>
viewModel.onEntityPressed(context, EntityType.payment, true),
subtitle: memoizedPaymentStatsForUser(
user.id,
state.paymentState.map,
state.invoiceState.map,
localization.active,
localization.archived),
),
company.isModuleEnabled(EntityType.quote)
? EntityListTile(
bottomPadding: 1,
icon: getEntityIcon(EntityType.quote),
title: localization.quotes,
onTap: () =>
viewModel.onEntityPressed(context, EntityType.quote),
onLongPress: () => viewModel.onEntityPressed(
context, EntityType.quote, true),
subtitle: memoizedQuoteStatsForUser(
user.id,
state.quoteState.map,
localization.active,
localization.archived),
)
: Container(),
/*
company.isModuleEnabled(EntityType.project)
? 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_notes.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/ui/app/buttons/action_icon_button.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -25,6 +26,7 @@ class _VendorEditState extends State<VendorEdit>
with SingleTickerProviderStateMixin {
TabController _controller;
static final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final _debouncer = Debouncer();
@override
void initState() {

View File

@ -15432,15 +15432,14 @@ mixin LocalizationsProvider on LocaleCodeAware {
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 lateFeeAmount => _localizedValues[localeCode]['late_fee_amount'];
String get lateFeePercent => _localizedValues[localeCode]['late_fee_percent'];
String lookup(String key) {
final lookupKey = toSnakeCase(key);
return _localizedValues[localeCode][lookupKey] ??

View File

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

View File

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